蛇形填数
来源:互联网 发布:什么是贵族气质知乎 编辑:程序博客网 时间: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
- 蛇形填数
- 算法:蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数问题
- 蛇形填数
- C++蛇形填数
- 蛇形填数
- 蛇形填 数
- 蛇形填数
- NYOJ - 蛇形填数
- 蛇形填数
- 各种蛇形填数
- 蛇形填数
- 蛇形填数
- ACM-蛇形填数
- 蛇形填数
- MySQL导出数据到txt
- "undefined reference to" 问题解决方法
- APR 池
- JDBC:LOB---BLOB、CLOB
- 利用JDBC连接服务器数据库
- 蛇形填数
- 百度编辑器 UEditor 使用
- mybatis中的模糊查询
- undefined reference to
- InstallShield使用---安装设计界面
- 韩信点兵
- Android常用的编码操作规范
- HDU 5534(Partial Tree-背包)
- 程序员的自我修养修订篇