螺旋矩阵
2009-04-24 16:25
162 查看
public class TestU { public static void main(String[] args) { int[][] arr = new int[4][5]; int temp = 1; int i = 0; int j = 0; for(int t=0;t<arr.length;t++) { i=t; for(j=t;j<arr[t].length-t;j++) { if(temp==arr.length*arr[t].length+1) { break; }else { arr[i][j] =temp; temp++; } } j--; for(i=i+1;i<arr.length-t;i++) { if(temp==arr.length*arr[t].length+1) { break; }else { arr[i][j] =temp; temp++; } } i--; for(j=j-1;j>=t;j--) { if(temp==arr.length*arr[t].length+1) { break; }else { arr[i][j] =temp; temp++; } } j++; for(i=i-1;i>t;i--) { if(temp==arr.length*arr[t].length+1) { break; }else { arr[i][j] =temp; temp++; } } i++; } for(int k=0;k<arr.length;k++) { for(int l=0;l<arr[k].length;l++) { System.out.print(arr[k][l]+" "); } System.out.println(); } } }呵呵,我一直不喜欢做过程的东西,但还是没法。这是第一种方法。
public class TestWU { public static void main(String[] args) { int[][] arr = new int[5][5]; int temp = 1; int i = 0; int j = 0; while(true) { arr[i][j] = temp++; boolean right= j<arr[i].length-1&&arr[i][j+1]==0; boolean down = i<arr.length-1&&arr[i+1][j]==0; boolean left = j>0&&arr[i][j-1]==0; boolean up = i>0&&arr[i-1][j]==0; /* if(right) { if(down) { i++; }else { j++; } } else if(down) { if(left) { j--; }else { i++; } } else if(left) { if(up) { i--; }else { j--; } } else if(up) { if(right) { j++; }else { i--; } } else break;*/ if(down) { if(right) { j++; }else { i++; } } else if(up) { if(left) { j--; }else { i--; } } else if(right) { if(down){ i++; }else { j++; } } else if(left) { if(up) { i--; }else { j--; } } else break; } for(int k=0;k<arr.length;k++) { for(int l=0;l<arr[k].length;l++) { System.out.print(arr[k][l]+" "); } System.out.println(); } } }这是第二种方法.