//问题:用户输入一个数,输出以这个数组成的n位回形方阵,例如用户输入3,输出下面的3位回形方阵:
1 2 3
8 9 4
7 6 5
```方法一:
System.out.println("请输入一个整数:");
int len=input.nextInt();
int s=len*len;//方阵总个数
int [][] fangZheng= new int[len][len];
int k=1,i=0,j=0;
//k=1表示向右移动,k=2表示向下移动,k=3表示向左移动,k=4表示向上移动
for(int m=1;m<=s;m++){
if(k==1){
if(j<len&&fangZheng[i][j]==0){
fangZheng[i][j++]=m;
}else{
k=2;
j--;
i++;
m--;
}
} else if(k==2){
if(i< len &&fangZheng[i][j]==0){
fangZheng[i++][j]=m;
}else{
k=3;
i--;
j--;
m--;
}
} else if(k==3){
if(j>=0&&fangZheng[i][j]==0){
fangZheng[i][j--]=m;
}else{
k=4;
j++;
i--;
m--;
}
} else if(k==4) {
if(i >0 &&fangZheng[i][j]==0){
fangZheng[i--][j]= m;
}else {
k=1;
i++;
j++;
m--;
}
}
}
```方法二:
System.out.println("请输入一个整数:");
int len=input.nextInt();
int s=len*len;//方阵总个数
int [][] fangZheng= new int[len][len];
int count=0;//更新的数
int maxX=len-1;//x轴的最大下标
int maxY=len-1;//Y轴的最大下标
int minX=0;//x轴的最小下标
int minY=0;//x轴的最小下标
while(minX<=maxX){
for(int x=minX;x<=maxX;x++){
fangZheng[minY][x]=++count;
}
minY++;
for(int y=minY;y<=maxY;y++){
fangZheng[y][maxX]=++count;
}
maxX--;
for(int x=maxX;x>=minX;x--){
fangZheng[maxY][x]=++count;
}
maxY--;
for(int y=maxY;y>=minY;y--){
fangZheng[y][minX]=++count;
}
minX++;
}
for(int m=0;m<fangZheng.length;m++){
for(int n=0;n<fangZheng[m].length;n++){
System.out.print(fangZheng[m][n]+"\t");
}
System.out.println();
}
2021-04-20
最新推荐文章于 2024-10-16 10:13:45 发布