AcWing 756. 蛇形矩阵(Java)模拟-简单
原题链接
简单
作者:
看着我
,
2021-04-11 11:03:00
,
所有人可见
,
阅读 357
Java 代码
import java.util.Scanner;
public class Main {
static int[][] dir = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[][] a = new int[n][m];
//方向
int k = 0;
//边界控制
int s = 1;
//笔头坐标
int x = 0;
int y = -1;
for (int i = 1; i <= n*m; i++) {
x +=dir[k][0];
y +=dir[k][1];
a[x][y] = i;
//到达右边界,且当前方向从左到右
if (y == m-s && k == 0) {
k = 1;//换成从上到下的方向
continue;
}
//到达右下,且当前方向从上到下
if (x == n-s && k == 1) {
k = 2;//换成从右到左的方向
continue;
}
//到达左下,且当前方向从右到左
if (y == s-1 && k == 2) {
k = 3;//换成从下到上的方向
continue;
}
//到达左上,且当前方向从下到上
if (x == s && k == 3) {
k = 0;//换成从左到右的方向
s++;//边界缩小一圈
continue;
}
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}