62,623
社区成员
发帖
与我相关
我的任务
分享
public class test{
test(int m,int n){
int[][] rule = new int[][]{{1,0},{-1,1},{0,1},{1,-1}};
int[][] map = new int[m][n];
for(int i=0,j=0,k=0,c=0;k<m*n;k++){
map[i][j] = k;
i += rule[c][0];
j += rule[c][1];
if(i>=m||j>=n){
int[] tmp = rule[c];
if(i>=m)
rule[0] = new int[]{0,1};
else if(j>=n)
rule[2] = new int[]{1,0};
i -= tmp[0];
j -= tmp[1];
if(!(c==0||c==2)) c=c>=rule.length-1?0:c+1;
i += rule[c][0];
j += rule[c][1];
}
if(c==0||c==2||((i==0||i==m-1)&&c==1)||((j==0||j==n-1)&&c==3)) c=c>=rule.length-1?0:c+1;
}
for(int i=0;i<map.length;i++)
for(int j=0;j<map[i].length;j++)
System.out.print(map[i][j]+(j==map[i].length-1?"\n":" "));
}
public static void main(String args[]){
new test(5,5);
}
}