本文实例讲述了Java基于二维数组实现的数独问题。分享给大家供大家参考,具体如下:
代码
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
import java.util.Random;
import java.util.ArrayList;
public class Suduku {
/**
*打印二维数组,数独矩阵
*/
public static void printArray(int a[][])
{
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(" "+a[i][j]);
if (0==((j+1)%3)) {
System.out.print(" ");
}
}
System.out.println();
if(0==((i+1)%3))
{
System.out.println();
}
}
}
/**
* 产生一个1-9的不重复长度为9的一维数组
*/
public static ArrayList<Integer> creatNineRondomArray()
{
ArrayList <Integer>list = new ArrayList<Integer>();
Random random=new Random();
for (int i = 0; i < 9; i++) {
int randomNum=random.nextInt(9)+1;
while (true) {
if (!list.contains(randomNum)) {
list.add(randomNum);
break;
}
randomNum=random.nextInt(9)+1;
}
}
System.out.println("生成的一位数组为:");
for (Integer integer : list) {
System.out.print(" "+integer.toString());
}
System.out.println();
return list;
}
/**
*通过一维数组和原数组生成随机的数独矩阵
*
*遍历二维数组里的数据,在一维数组找到当前值的位置,并把一维数组
*当前位置加一处位置的值赋到当前二维数组中。目的就是将一维数组为
*依据,按照随机产生的顺序,将这个9个数据进行循环交换,生成一个随
*机的数独矩阵。
*
*/
public static void creatSudokuArray(int[][]seedArray,ArrayList<Integer> randomList)
{
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
for (int k = 0; k < 9; k++) {
if(seedArray[i][j]==randomList.get(k))
{
seedArray[i][j]=randomList.get((k+1)%9);
break;
}
}
}
}
System.out.println("处理后的数组");
Suduku.printArray(seedArray);
}
public static void creatSudokuQuestion(int [][] a)
{
Random rand=new Random();
for(int i=0;i<9;i++){
for(int j=0;j<4;j++){
a[i][(int)rand.nextInt(9)]=0;
}
}
Suduku.printArray(a);
}
//
public static void main(String[] args) {
int seedArray[][]={
{9,7,8,3,1,2,6,4,5},
{3,1,2,6,4,5,9,7,8},
{6,4,5,9,7,8,3,1,2},
{7,8,9,1,2,3,4,5,6},
{1,2,3,4,5,6,7,8,9},
{4,5,6,7,8,9,1,2,3},
{8,9,7,2,3,1,5,6,4},
{2,3,1,5,6,4,8,9,7},
{5,6,4,8,9,7,2,3,1}
};
System.out.println("原始的二维数组:");
Suduku.printArray(seedArray);
ArrayList<Integer> randomList=Suduku.creatNineRondomArray();
Suduku.creatSudokuArray(seedArray, randomList);
System.out.println("生成数独问题:");
Suduku.creatSudokuQuestion(seedArray);
}
}
|
输出:
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
原始的二维数组:
9 7 8 3 1 2 6 4 5
3 1 2 6 4 5 9 7 8
6 4 5 9 7 8 3 1 2
7 8 9 1 2 3 4 5 6
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
8 9 7 2 3 1 5 6 4
2 3 1 5 6 4 8 9 7
5 6 4 8 9 7 2 3 1
生成的一位数组为:
2 3 9 1 6 8 7 5 4
处理后的数组
1 5 7 9 6 3 8 2 4
9 6 3 8 2 4 1 5 7
8 2 4 1 5 7 9 6 3
5 7 1 6 3 9 2 4 8
6 3 9 2 4 8 5 7 1
2 4 8 5 7 1 6 3 9
7 1 5 3 9 6 4 8 2
3 9 6 4 8 2 7 1 5
4 8 2 7 1 5 3 9 6
生成数独问题:
0 5 7 9 6 3 0 0 0
9 6 3 0 0 0 0 5 7
0 2 4 1 0 7 9 6 0
5 0 1 6 0 9 2 0 0
6 0 9 2 0 0 5 7 0
2 0 8 0 7 1 0 3 9
7 1 5 0 0 6 4 8 2
3 0 6 4 8 2 7 0 5
4 8 2 7 0 0 3 9 6
|
希望本文所述对大家java程序设计有所帮助。
原文链接:http://blog.csdn.net/qq_37999723/article/details/78348172
相关文章
猜你喜欢
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-06-04 87
-
2025-05-25 20
-
2025-05-29 117
-
2025-05-27 29
-
2025-05-25 85
热门评论

