本帖最后由 李天富 于 2014-11-3 14:59 编辑
- class Screw
- {
- public static void main(String[] args)
- {
- int[][]in=new int[6][6];
- method(in,0,0);
- for (int i=0;i<in[0].length ;i++ )
- {
- for (int j=0;j<in[0].length ;j++ )
- {
- System.out.print(in[i][j]+"\t");
- }
- System.out.println();
- System.out.println();
-
- }
-
- }
- /*
- num表示起始角标,start表示开始赋值的起始值。method函数
- 可以理解为从角标num开始,从左到右,然后从上到下,
- 然后从右到左,然后从下到上赋值一圈。迭代后即完成了全部赋值。
-
- */
- public static void method(int[][] in,int num,int start)
- {
- int x1,x2;
- x1=num;
- x2=in[0].length-1-num;
- //x1,x2代表循环左起点和右终点。
- if(x1>=in[0].length)
- return;
- if(x1==x2)
- {
- in[x1][x2]=start;
- return;
- }
- //x1==x2时,表示只剩一个元素,所以赋值后返回即可,避免重复赋值。
-
- for (int i=x1;i<x2+1 ;i++ )
- {
- in[x1][i]=start++;
- }
- for(int i=x1+1;i<x2;i++)
- {
- in[i][x2]=start++;
- }
- for(int i=x2;i>x1-1;i--)
- {
- in[x2][i]=start++;
- }
- for(int i=x2-1;i>x1;i--)
- {
- in[i][x1]=start++;
- }
- method(in,num+1,start);
-
- }
- }
复制代码
|