Suduku
来源:互联网 发布:听新闻软件下载 编辑:程序博客网 时间:2024/05/29 19:26
package test;
public final class Shudu {
public static int GRID_NUM = 9;
public static byte[][] gameSudoku(byte[][] initBoard) {
// byte[][] resultBoard = new byte[GRID_NUM][GRID_NUM];
getResult(initBoard, 0, 0);
return initBoard;
}
public static boolean getResult(byte[][] board, int i, int j) {
while (i < GRID_NUM && j < GRID_NUM && board[i][j] != 0) {
j++;
if (j == GRID_NUM) {
j = 0;
i++;
}
}
if (i >= GRID_NUM)
return true;
byte v;
for (v = 1; v <= 9; v++) {
if (search(board, i, j, v)) {
board[i][j] = v;
if (getResult(board, i, j))
return true;
board[i][j] = 0;
}
}
return false;
}
private static boolean search(byte[][] board, int i, int j, byte v) {
byte k;
for (k = 0; k < GRID_NUM; k++) {
if (board[i][k] == v)
return false;
}
for (k = 0; k < GRID_NUM; k++) {
if (board[k][j] == v)
return false;
}
int nl = i - (i % 3);
int nr = j - (j % 3);
int nh = nl + 3;
int nw = nr + 3;
for (int x = nl; x < nh; x++)
for (int y = nr; y < nw; y++) {
if (board[x][y] == v)
return false;
}
return true;
}
}
public final class Shudu {
public static int GRID_NUM = 9;
public static byte[][] gameSudoku(byte[][] initBoard) {
// byte[][] resultBoard = new byte[GRID_NUM][GRID_NUM];
getResult(initBoard, 0, 0);
return initBoard;
}
public static boolean getResult(byte[][] board, int i, int j) {
while (i < GRID_NUM && j < GRID_NUM && board[i][j] != 0) {
j++;
if (j == GRID_NUM) {
j = 0;
i++;
}
}
if (i >= GRID_NUM)
return true;
byte v;
for (v = 1; v <= 9; v++) {
if (search(board, i, j, v)) {
board[i][j] = v;
if (getResult(board, i, j))
return true;
board[i][j] = 0;
}
}
return false;
}
private static boolean search(byte[][] board, int i, int j, byte v) {
byte k;
for (k = 0; k < GRID_NUM; k++) {
if (board[i][k] == v)
return false;
}
for (k = 0; k < GRID_NUM; k++) {
if (board[k][j] == v)
return false;
}
int nl = i - (i % 3);
int nr = j - (j % 3);
int nh = nl + 3;
int nw = nr + 3;
for (int x = nl; x < nh; x++)
for (int y = nr; y < nw; y++) {
if (board[x][y] == v)
return false;
}
return true;
}
}
- Suduku
- 【ZOJ】2580【搜索】【suduku】
- POJ 3074 suduku
- 暑假练习--hdoj--搜索--suduku
- Uncompressing Linux... done, booting the kernel
- 正则获取html中图片路经
- Qt4--可变形状对话框(对 ui 的多重继承)
- struts2的文件上传(0):struts2的文件上传并且上传目录可动态配置
- 无相连通图的生成树个数
- Suduku
- Android4.0Sd卡移植之使用vold自动挂载sd卡
- 请342625199512182110身份证失主与我联系:13951853740
- DDOS软件使用教程以及工具包下载 网站渗透 和攻击
- boost库在工作(31)网络服务端之一
- Spring攻略笔记-8 AspectJ支持
- [Android实例] 如何记住第一次启动android的状态如引导页
- 汇编语言程序设计01-03课程笔记
- 栅格数据空间分析之三地图代数进阶