package cn.itcast.execise;
/*
*
* 6. 螺旋填数.
*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
*
*
* */
public class Execise06 {
public static void main(String[] args) {
//数组存储的数据
int[][] arr=new int[4][5];
//
int col=0;
int row=0;
//第一个数为1
arr[0][0]=1;
//控制方向的数组
int[][] direction={{0,1},//往右
{1,0},//往下
{0,-1},//往左
{-1,0}};//往上
//控制方向数组的下标
int directionindex=0;
//循环依次赋值
for (int i = 2; i <=20; i++) {//自然数赋值的范围
//得到新的坐标
col=col+direction[directionindex][0];
row=row+direction[directionindex][1];
//判断越界的情况
if((col>=4||col<0)||(row>=5||row<0)||(arr[col][row])!=0){
//得到新的坐标
col=col-direction[directionindex][0];
row=row-direction[directionindex][1];
//进行转向
directionindex++;
if(directionindex==4){
directionindex=0;
}
//得到新的坐标
col=col+direction[directionindex][0];
row=row+direction[directionindex][1];
}
//赋值
arr[col][row]=i;
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
算法:螺旋填数
最新推荐文章于 2022-02-16 11:39:01 发布