java - 原地旋转 NxN 矩阵 90 度时出现逻辑错误

标签 java matrix logic

我使用下面的代码将 NxN 矩阵向左旋转 90 度。但它有一些逻辑错误。大多数元素已经旋转,但有些元素还没有静止。请帮我更正代码。

int n = 4, x = 1, i, j, temp;
int a[][] = new int[n][n];

for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        a[i][j] = x++;
    }
}

for (i = 0; i < n / 2; i++) {
    for (j = n - 1; j >= n / 2; j--) {

        temp = a[i][j];
        a[i][j] = a[n - 1 - i][j];
        a[n - 1 - i][j] = a[j][i];
        a[j][i] = a[i][n - 1 - j];
        a[i][n - 1 - j] = temp;
    }
}


for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        System.out.print(a[i][j] + " ");
    }
    System.out.print("\n");
}

最佳答案

我对你的程序做了一些修改,现在它可以工作了。我提供了将矩阵左右旋转 90 度的代码。看看吧。

for (i = 0; i < n / 2; i++) {
    for (j = i; j < n - 1 - i; j++) {
        //Rotating left by 90 degrees
        temp = a[i][j];
        a[i][j] = a[j][n - 1 - i];
        a[j][n - 1 - i] = a[n - 1 - i][n - 1 - j];
        a[n - 1 - i][n - 1 - j] = a[n - 1 - j][i];
        a[n - 1 - j][i] = temp;

        /*
        //Rotating right by 90 degrees
        temp = a[i][j];
        a[i][j] = a[n - 1 - j][i];
        a[n - 1 - j][i] = a[n - 1 - i][n - 1 - j];
        a[n - 1 - i][n - 1 - j] = a[j][n - 1 - i];
        a[j][n - 1 - i] = temp;
        */
    }
}

关于java - 原地旋转 NxN 矩阵 90 度时出现逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38393581/

相关文章:

java - 递归迷宫算法

r - 在R中将两个具有不同维度的矩阵相乘

matlab - 如何用多列显示一列矩阵

javascript - 正则表达式和 Javascript - 双竖线

hardware - 如何思考数字电路设计

java - 开源网络应用程序更容易被黑客攻击?

java - 算术运算使 0、1 和 2 返回 0 | 3、4 和 5 返回 1 等

java - PHP Bcrypt Salt 自 7.0 起

c# - Flex/Flash/Java/C# 中的漂亮日期文本

c - N个元素的所有组合