我使用下面的代码将 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/