回形填数与蛇形填数问题(Java)
2016-10-29 18:06
330 查看
回形填数与蛇形填数问题(Java)
一、问题描述:当给出N*N的矩阵,要求填入下列形式的数:
1. 回形填数
例如:
当N=5时,有
25 | 10 | 11 | 12 | 13 |
24 | 9 | 2 | 3 | 14 |
23 | 8 | 1 | 4 | 15 |
22 | 7 | 6 | 5 | 16 |
21 | 20 | 19 | 18 | 17 |
36 | 17 | 18 | 19 | 20 | 21 |
35 | 16 | 5 | 6 | 7 | 22 |
34 | 15 | 4 | 1 | 8 | 23 |
33 | 14 | 3 | 2 | 9 | 24 |
32 | 13 | 12 | 11 | 10 | 25 |
31 | 30 | 29 | 28 | 27 | 26 |
例如:
当N=5时,有
1 | 3 | 4 | 10 | 11 |
2 | 5 | 9 | 12 | 19 |
6 | 8 | 13 | 18 | 20 |
7 | 14 | 17 | 21 | 24 |
15 | 16 | 22 | 23 | 25 |
二、问题分析:使用二维数组存储数据
三、源代码:
1.回形填数
import java.util.Scanner; public class huixing { public static void main(String[] args) { int n; Scanner input = new Scanner(System.in); n = input.nextInt(); int m = n * n; int[][] num = new int ; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { num[i][j] = 0; } } int i = 0, j = 0; int t = 1; while (m > 0) { while (i < n && i >= 0 && num[i][j] == 0) { num[i][j] = m; m --; i += t; } i -= t; j += t; while (j >= 0 && j < n && num[i][j] == 0) { num[i][j] = m; m --; j += t; } j -= t; t = -t; i += t; } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { System.out.format("%-4d", num[i][j]); } System.out.println(); } System.out.println(); } }
2.蛇形填数
import java.util.Scanner; public class shexing { public static void main(String[] args) { int n; Scanner input = new Scanner(System.in); n = input.nextInt(); int[][] num = new int ; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { num[i][j] = 0; } } int i = 0, j = 0; int m = 1; int flag = 0; while (m <= n * n) { //左下动 while (i >= 0 && i < n && j >= 0 && j < n && num[i][j] ==0) { num[i][j] = m; m ++; i ++; j --; } i --; j ++; if (n % 2 == 1 && i == n -1) { flag = 1; } if (flag == 0) { i ++; }else { j ++; } //右上动 while (i >= 0 && i < n && j >= 0 && j < n && num[i][j] ==0) { num[i][j] = m; m ++; i --; j ++; } i ++; j --; if (n % 2 == 0 && j == n-1) { flag = 1; } if (flag == 0) { j ++; }else { i ++; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { System.out.format("%-4d", num[i][j]); } System.out.println(); } System.out.println(); } }
相关文章推荐
- 算法竞赛一些基础问题的复习(java) 2(开灯问题、蛇形填数、TEX、wertyu)
- Java中文问题详解
- 在JAVA开发中的中文处理问题及解决办法
- 应聘Java,jsp,j2ee软件工程师笔试中可能出现的问题
- Java常见问题集锦(来自Sun中国官方站)
- Java 编程技术中汉字问题的一些url收藏
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- Java网络编程,有助于解决实际问题,
- Java多语言编码问题解析(2)
- Java初学者容易混淆的几个问题
- Java 编程技术中汉字问题的分析及解决
- JAVA中文比较问题的分析和解决
- Java , Installanywhere 在 Redhat 上的中文问题解决方法
- Java程序的脏数据问题
- JAVA与C++::关于JNI中文字符串操作问题总结
- 编写多线程的 Java 应用程序 如何避免当前编程中最常见的问题
- java中有关日期的显示问题
- 基于java时区转换夏令时的问题及解决方法
- Java的GregorianCalendar类和相关的历法问题
- Java 编程技术中汉字问题的分析及解决