某一年北科大研究所考题 ....(20分的样子)
顺时钟
123
894
765
可以参考老鼠迷宫的写法
下面这个是偷吃步..
比较简单....
时间复杂度佳
但看起来较呆
复制程式
public class test
{
static int [][] a;
public static void main(String args[])
{
int rank=5;
a=new int[rank][rank];
direct(0,0,rank,1);
for(int i=0;i<rank;i++){
for(int j=0;j<rank;j++)
System.out.print(a[i][j]%10+",");
System.out.println("");
}
}
public static void direct(int m,int n,int rank,int num)
{
for(int i=0;i<rank-1;i++){
a[m][n+i]=num;//→
a[m+i][n+rank-1]=num+(rank-1);//↓
a[m+rank-1][n+rank-1-i]=2*(rank-1)+num;//←
a[m+rank-1-i][n]=3*(rank-1)+num;//↑
num++;
}
if(rank>1)direct(m+1,n+1,rank-2,a[m+1][n]+1);
if(rank==1)a[m][n]=num;
}
}
每次同时走四个方向....
走完一圈递回降阶一次
setp1
[1][0][0][4]
[0][0][0][0]
[0][0][0][0]
[0][0][0][7]
stp2
[1][2][0][4]
[0][0][0][5]
[1][0][0][0]
[0][0][8][7]
stp3
[1][2][3][4]
[2][0][0][5]
[1][0][0][6]
[0][9][8][7]
stp4
[1][2][3][4]
[2][3][4][5]
[1][6][5][6]
[0][9][8][7]