マトリックスの1つのテーマについて
記録する.题目要求:1つの行列n行m列、出力は以下の行列例えば、n=4、m=5 0 1 2 3 4 13 14 15 16 5 12 18 17 6 11 10 9 8 7例えば、n=3、m=4 0 1 2 3 9 10 11 8 6 5
私の考えは、下のマークから法則を探して、いくつかの輪に相当して、各輪の終了条件はi値が初期のi値+1で、jが初期のj値であるとき、1輪が終了します.例えば、最初の初期の下付き文字が(0,0)、終了の下付き文字が(1,0)である.次に、新しい1周の下付き文字は最初(1,1)で、終了の下付き文字は(2,1)である.周数はn値の半分である.最後にwhile条件で除かれた1つの値を充填する.nが奇数であれば、最中間の1行の値の充填も行う.
コード実装:
しゅつりょく
私の考えは、下のマークから法則を探して、いくつかの輪に相当して、各輪の終了条件はi値が初期のi値+1で、jが初期のj値であるとき、1輪が終了します.例えば、最初の初期の下付き文字が(0,0)、終了の下付き文字が(1,0)である.次に、新しい1周の下付き文字は最初(1,1)で、終了の下付き文字は(2,1)である.周数はn値の半分である.最後にwhile条件で除かれた1つの値を充填する.nが奇数であれば、最中間の1行の値の充填も行う.
コード実装:
package baiao;
public class Test3 {
public static void main(String[] args) {
print(8, 9);
}
public static void print(int n, int m) {
int[][] a = new int[n][m];
int ibegin = 0;//for
int jbegin = 0;
int iend = n - 1;
int jend = m - 1;
int icircle = 0;//while
int jcircle = 0;
int i = 0;//while i
int j = 0;
int tmp = 0;//
//System.out.println("\\\\");
for(int k = 0; k < n / 2; k++) {
//System.out.println(k + " ");
while(!(i == icircle + 1 && j == jcircle)){
//System.out.println("tmp: " + tmp);
if(j < jend && i == ibegin) {
a[i][j] = tmp;
//System.out.println("1i,j" + i + " " + j + "a" + a[i][j]);
tmp++;
j++;
}
else if(j == jend && i < iend) {
a[i][j] = tmp;
//System.out.println("2i,j" + i + " " + j + "a" + a[i][j]);
tmp++;
i++;
}
else if(j > jbegin && i == iend) {
a[i][j] = tmp;
//System.out.println("3i,j" + i + " " + j + "a" + a[i][j]);
tmp++;
j--;
}
else if(i > ibegin) {
a[i][j] = tmp;
//System.out.println("4i,j" + i + " " + j + "a" + a[i][j]);
tmp++;
i--;
}
}//
icircle++;
jcircle++;
ibegin++;
jbegin++;
iend--;
jend--;
//System.out.println(icircle + " " + jcircle + " " + ibegin + " " + jbegin + " " + iend + " " + jend + " ");
}//for
a[i][j] = tmp;//i==icircle + 1,j == jcircle
tmp++;
//System.out.println( jbegin + " " + jend);
// n ,
if(n % 2 != 0) {
for(j = jbegin; j <= jend; j++) {
a[i][j] = tmp;
tmp ++;
}
}
//
for(int k1 = 0; k1 < n ; k1++) {
for(int k2 = 0; k2 < m; k2++) {
System.out.print(a[k1][k2] + " ");
}
System.out.println();
}
}
}
しゅつりょく
0 1 2 3 4 5 6 7 8
29 30 31 32 33 34 35 36 9
28 51 52 53 54 55 56 37 10
27 50 65 66 67 68 57 38 11
26 49 64 71 70 69 58 39 12
25 48 63 62 61 60 59 40 13
24 47 46 45 44 43 42 41 14
23 22 21 20 19 18 17 16 15