蛇形填数

来源:互联网 发布:什么是贵族气质知乎 编辑:程序博客网 时间:2024/06/05 11:48

蛇形填数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 16 9 25 4 3
 import java.util.Scanner;public class Main {    public static void main(String[] args)       {      // 获取输入        Scanner input=new Scanner(System.in);         int N=input.nextInt();         //定义四个方向,分别为 右、下、左、上          int[][] direction={{0,1},{1,0},{0,-1},{-1,0}};           //定义一个矩阵,用于存储          int[][] matrix=new int[N][N];         //x,y分别代表了矩阵中的行和列          int x=0,y=N-1;         //d用于转换方向,一共四个方向, 0,1,2,3代表四个方向, 0代表向右 :x,y{0,1} 1代表向下:x,y{1,0} 2代表向左 :x,y{0,-1}  3代表向上:x,y{-1,0}          int d=1;           for(int i=0; i<N*N; i++)           {               //正常情况一直累加              matrix[x][y]=i+1;               x+=direction[d][0];               y+=direction[d][1];             // x>=0 x<N y>=0 y<N 用于保证矩阵的元素必须在矩阵内  ,  matrix用于保证 设置过矩阵位置的元素不被覆盖掉              if(!(x>=0 && x<N && y>=0 && y<N) || matrix[x][y]!=0)               {                   //如果以上情况不满足,证明x 和 y 的值需要撤销掉,                  x-=direction[d][0];                   y-=direction[d][1];                   ++d;                   //四个方向 0 1 2 3                   d%=4;                   //重新调整后的方向                  x+=direction[d][0];                   y+=direction[d][1];               }           }           //输出矩阵的内容          for(int[] o:matrix)           {               for(int i:o)                   System.out.print(i+" ");               System.out.println();           }       }   }         


0 0
原创粉丝点击