0
行列を90度回転させる問題を解決しようとしています。すべてのヘルプは非常に理解されるであろうRotate Matrixエクササイズ(コードフェイズ)の列を交換するときの問題
int a[][] = new int[][]{
{40,12,15,37,33,11,45,13,25,3},
{37,35,15,43,23,12,22,29,46,43},
{44,19,15,12,30,2,45,7,47,6},
{48,4,40,10,16,22,18,36,27,48},
{45,17,36,28,47,46,8,4,17,3},
{14,9,33,1,6,31,7,38,25,17},
{31,9,17,11,29,42,38,10,48,6},
{12,13,42,3,47,24,28,22,3,47},
{38,23,26,3,23,27,14,40,15,22},
{8,46,20,21,35,4,36,18,32,3}
};
a = rotateImage(a);
:自分のコードが正しく列を交換されていない理由を私は、このエントリを持っているときに私が届かない
static int[][] rotateImage(int[][] a) {
for(int i = 0; i < a.length; ++i) {
for(int j = 0; j < i; ++j) {
int temp_ji = a[j][i];
a[j][i] = a[i][j];
a[i][j] = temp_ji;
}
}
int columnA = 0;
int columnB = a.length-1;
while(columnA != columnB)
{
swapColumns(a, columnA, columnB);
columnA++; columnB--;
if(columnA == 10)
{
break;
}
}
return a;
}
static void swapColumns(int a[][], int cA, int cB)
{
String s = "";
for (int i = 0; i < a.length; i++) {
int temp_ij = a[i][cB];
a[i][cB] = a[i][cA];
a[i][cA] = temp_ij;
s = s + " " + a[i][cA];
System.out.println(s);
}
}
:ここではこれまでのところ私のソリューションです。
これは問題の元の製剤である:
あなたは、n×nの画像を表す2次元行列が与えられます。画像を90度回転させます(時計回り)。
a = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
について
例出力は
rotateImage(a) =
[[7, 4, 1],
[8, 5, 2],
[9, 6, 3]]