package rotate;
public class Rotate { static int rc = 12;
static int i=0 ;
static int j=0;
static int d=0;
static int[][] dat = new int[rc][rc]; static int pen=2;
public static void main(String[] args){
// RC就是行列数,试试5 6 7 10等数值,都能正确输出,呵呵~~ //初始化数据
for(int ii=0; ii<rc; ii++){
for(int jj=0; jj<rc; jj++){
dat[ii][jj]=-1;
}
}
dat[0][0]=1 ;
while(pen<=(rc)*(rc)){
//PR();
if (nextstep(rc))
dat[i][j]=pen++;
}
PR();}private static boolean nextstep(int rc)
{
int ii=i,jj=j;
switch (d) {
case 1:ii=i+1;break;
case 0:jj=j+1;break;
case 3:ii=i-1;break;
case 2:jj=j-1;break;
}
if (ii<0 ||ii>=rc||jj<0 ||jj>=rc||dat[ii][jj]>0) //边界
{
d++;
if (d>3) d=0;
return false;
}
i=ii;j=jj;
return true;
}private static void PR(){
// 打印结果
for(int i=0; i<rc; i++){
for( int j=0; j<rc; j++){
System.out.print(dat[i][j]+"\t");
}
System.out.println("\n");
}
System.out.println("方向:"+d+"I:" + i + "J:" + j + "数字" + pen);
}}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货