0
我有一個數獨解算器,完美地與9x9 sudokus一起使用。我想得到它與9x6 sudokus和其他大小的工作。是否可以改變這個功能?Java Sudoku求解器,它是否與不同的數獨尺寸一樣工作?
你可以看到,「9」始終是硬編碼。所以我嘗試將這些值更改爲9和6,但結果在我的解決方案中僅爲0。
所以之前我繼續瞎搞與此,它甚至有可能改變這種支持不同的網格大小不改變的功能呢?
public boolean solve(int i, int j, int[][] cells) {
if (i == 9) {
i = 0;
if (++j == 9) {
return true;
}
}
if (cells[i][j] != 0)
{
return solve(i + 1, j, cells);
}
for (int val = 1; val <= 9; ++val) {
if (legal(i, j, val, cells)) {
cells[i][j] = val;
if (solve(i + 1, j, cells)) {
return true;
}
}
}
cells[i][j] = 0;
return false;
}
public static boolean legal(int i, int j, int val, int[][] cells) {
for (int k = 0; k < 9; ++k) // rij
{
if (val == cells[k][j]) {
return false;
}
}
for (int k = 0; k < 9; ++k) // kolom
{
if (val == cells[i][k]) {
return false;
}
}
int boxRowOffset = (i/3) * 3;
int boxColOffset = (j/3) * 3;
for (int k = 0; k < 3; ++k) // box
{
for (int m = 0; m < 3; ++m) {
if (val == cells[boxRowOffset + k][boxColOffset + m]) {
return false;
}
}
}
return true;
}
我看不出數獨謎題*可以*具有不同於列的行數... – David
數獨謎題總是有AxA但從來沒有AxB的大小。你可以嘗試的3x3,6x6的,9x9的,12×12,15×,18×18等 – XtremeBaumer
好,你可以有各種[形狀](https://www.google.co.uk/search?q=sudoku+different+形狀&tbm = isch&tbo = u&source = univ&sa = X&ved = 0ahUKEwiAybuhzPnTAhVL2SwKHcaFDh4QsAQILw&biw = 1703&bih = 878)。但之後我不會再稱它爲數獨...... – GhostCat