首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,对于不同的Sudoku大小,它的工作方式相同吗?

,对于不同的Sudoku大小,它的工作方式相同吗?
EN

Stack Overflow用户
提问于 2017-05-18 13:51:37
回答 1查看 131关注 0票数 0

我有一个sudoku解算器,与9x9 sudokus完美地工作。我想让它与9x6 sudokus和其他大小也一起工作。可以只改变这个函数吗?

你可以看到"9“总是硬编码的。因此,我尝试将这些值更改为9和6,但结果在我的解决方案中仅为0。

因此,在我继续处理这个问题之前,是否可以在不改变函数的情况下更改它以支持不同的网格大小?

代码语言:javascript
复制
    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;

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 14:43:13

最原始的sudoku是2x2 sudoku。

代码语言:javascript
复制
1 2
2 1 

您有两个非常好的解决方案,每个数字都出现在每一行,每个数字都出现在每一列中。

另一个例子是3x2。

代码语言:javascript
复制
1 2
2 3
3 1

这是不可解的,因为不是每一行都有所有的数字。

另外,9x6不会在每一行中都有所有的数字。

因此,没有解决方案是可能的,这不是一个sudoku。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44049666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档