Acwing 蛇形矩阵
package javaqq;
import java.util.Scanner;
public class 蛇形 {
public static void main(String [] args) {
int n,m;
int [][]res=new int[100][100] ;
boolean [ ][ ]st=new boolean[100][100] ;
Scanner reader =new Scanner(System.in);
n=reader.nextInt();
m=reader.nextInt();
int dx[]= {-1,0,1,0}; //横坐标向量
int dy[]= {0,1,0,-1}; //纵坐标向量
for(int x=0,y=0,d=1,k=1;k<n*m;k++)
{
res[x][y]=k; //填充每个数字
st[x][y]=true; //已经走过
int a=x+dx[d],b=y+dy[d];//判断下一个坐标是否可行
if(a<0 ||a>=n ||b<0 ||b>=m ||st[a][b])
{
d=(d+1)%4; // 向左 向上 向右 向下
a=x+dx[d]; //如果向右不能走, d=d+1 顺时针循环
b=y+dy[d];
}
//如果没用越界等情况 就直接走
x=a;y=b;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
System.out.print(res[i][j]+" ");
}
System.out.println("");
}
}
}