Acwing 蛇形矩阵

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("");
			 
		 }
		 
		
	}
}
原文地址:https://www.cnblogs.com/shenxiaodou/p/12369227.html