import java.util.Scanner;
public class 蛇形方阵 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int[][] arr=new int[n][n];
int row=0,clo=0;
int count=1;
arr[row][clo]=1;//第一个数是1
while (count < n * n) {
//当列数加1小于右边边界时,并且右边的位置没有数可以一直往右边赋值
while (clo + 1 < n && arr[row][clo + 1] == 0) {
arr[row][clo++] = count++;
}
//向下
while (row + 1 < n && arr[row + 1][clo] == 0) {
arr[row++][clo] = count++;
}
//向左
while (clo - 1 >= 0 && arr[row][clo - 1] == 0) {
arr[row][clo--] = count++;
}
//向上
while (row - 1 >= 0 && arr[row - 1][clo] == 0) {
arr[row--][clo] = count++;
}
}
//count是16的时候会跳出上面的循环,row和clo也是最后一个空缺数组的索引
arr[row][clo] = count;
//二维数组遍历
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%3d",arr[i][j]);
}
System.out.println();
}
}
}
Java实现 洛谷 P5731 【深基5.习6】蛇形方阵
最新推荐文章于 2024-07-10 00:06:54 发布