- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决数独作为家庭作业的约束满足问题。我已经为特定行和列中的所有元素构造了不同的约束。我正在尝试为子区域中的元素构造不同的约束,但我遇到了一些麻烦。
我当前算法背后的总体思路是将子区域(例如 9x9 网格的 3x3 框)中的所有变量添加到列表中,然后置换该列表中的所有值以构造 NotEqualConstraints每个变量之间。下面的代码适用于 NxN 网格的第一个子区域,但我不确定我应该如何更改它以遍历整个网格的其余部分。
int incSize = (int)Math.sqrt(svars.length);
ArrayList<Variable> subBox = new ArrayList<Variable>();
for (int ind = 0; ind < incSize; ind++) {
for (int ind2 = 0; ind2 < incSize; ind2++) {
subBox.add(svars[ind][ind2]);
}
}
for (int i = 0; i < subBox.size(); i++) {
for (int j = i + 1; j < subBox.size(); j++) {
NotEqualConstraint row = new NotEqualConstraint(subBox.get(i), subBox.get(j));
constraints.add(row);
}
}
谁能指导我如何修改代码以命中每个子区域而不仅仅是左上角的正确方向?
编辑:我也愿意尝试任何可行的算法,没有必要将所有值添加到每个子区域的 ArrayList。如果您看到更好的方法,请分享见解
最佳答案
对于那些感兴趣的人,这是我想出的工作解决方案:
for (int ofs = 0; ofs < svars.length; ofs++) {
int col = (ofs % incSize) * incSize;
int row = ((int)(ofs / incSize)) * incSize;
ArrayList<Variable> subBox = new ArrayList<Variable>();
for (int ind = row; ind < row+incSize; ind++) {
for (int ind2 = col; ind2 < col+incSize; ind2++) {
subBox.add(svars[ind][ind2]);
}
}
for (int i = 0; i < subBox.size(); i++) {
for (int j = i + 1; j < subBox.size(); j++) {
NotEqualConstraint c = new NotEqualConstraint(subBox.get(i), subBox.get(j));
constraints.add(c);
}
}
}
关于java - 二维数组约束 : Sudoku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706908/
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
是否有算法或方法可以获得数独游戏的初始状态数独谜题。最好具有不同难度级别的能力? 最佳答案 基本上有两种方法。两者都需要 2 solvers ,一个类人求解器,它使用人类可执行的策略和回溯求解器。 使
我正在尝试准备数独项目。我现在有行和列控件。 如果我创建数组,则9 * 9程序在运行时崩溃,并且窗体窗口冻结。我通过单击“停止调试”按钮来停止它。但它与一小部分阵列完美配合。例如3 * 3。如果我创建
我仍在研究我的数独解算器,但又一次遇到了一些麻烦。我已经让数独解算器开始工作,但是每当我尝试解决一个真正“困难”的数独板时,我的解算器都会告诉我没有可能的解决方案,因为堆栈溢出错误。是的,我知道这些董
我正在尝试解决数独作为家庭作业的约束满足问题。我已经为特定行和列中的所有元素构造了不同的约束。我正在尝试为子区域中的元素构造不同的约束,但我遇到了一些麻烦。 我当前算法背后的总体思路是将子区域(例如
我对以下代码片段有疑问:它是一个数独求解器,通过填充空单元格来解决数独难题。我无法真正理解求解器方法背后的逻辑。为什么它在尝试 k=1-9 后返回 false 并在遍历所有单元格后返回 true 。我
【LeetCode】36. Valid Sudoku 解题报告(Python) 题目地址:https://leetcode.com/problems/valid-sudoku/description
是否有任何算法可以解决任何传统的数独难题,而无需猜测? 这里的 Guessing 是指尝试一个候选人,看看它走多远,如果发现与猜测矛盾,则回溯到猜测步骤并尝试另一个候选人;当所有候选人都用尽但没有成功
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 12 个月前关闭。 Improve
我用c语言做了一个数独解算器,我的递归函数只适用于第一行而不是停止。它查找第一个值为 0 的元素并填充它,然后查找下一个值,并用另一个解决方案填充它。在它解决第一行后停止,我将如何启用 canSolv
我正在编写一个数独游戏,每个单元格由一个 JTextField 表示,总共有 81 个 JTextField 对象。这种安排让我想知道如何有效地清除拼图。 现在我有这个: void clear() {
我正在开发一个 Java 程序,用于检查数独谜题是否已解决。我已经完成了水平和垂直数字检查部分。但是当尝试检查方 block 时,我无能为力。这是我的检查系统的工作原理。 这就是我想做的。希望有人提供
我必须创建一个程序,将数独的 9 行显示为 9 个 9 位数字,然后提示用户对数独执行 6 种操作之一。然后我们必须在用户每次执行操作时输出数独。这是应该如何进行的示例运行: Welcome to S
所以我更新了我的代码,但我仍然对如何检查已完成的数独板中的 3x3 block 以查看它是否没有任何重复数字感到困惑。这是我更新的方法。 static boolean isBlock1Valid(in
您好,我正在开发数独检查器,它可以验证已完成的板的解决方案是否正确。我目前对如何在 block 内进行检查感到困惑。现在我有一个 boolean 值如下我正在检查左上角的 block (Block1)
http://home.earthlink.net/~benfranq/Sudoku.html 也许有人可以告诉我为什么它在 Internet Explorer 中不起作用 在其他浏览器中,它似乎工作
锁定。这个问题及其答案是 locked 因为这个问题是题外话但具有历史意义。它目前不接受新的答案或互动。 介绍 一个有效的数独网格由数字 1 到 9 填充,在每个 9 的子 block 、行或列中没
我正在尝试用 Java 创建一个数独求解器,总的来说,我对编程和 Java 都是新手。我真的不知道如何处理这种错误。我不断收到堆栈溢出错误。 我尝试了不同的代码,但没有一个有效,但无论如何,这是我最新
我回答说我会有一个二维数组。 然后我会有3个函数 一个检查水平状态。 另一个检查垂直状态的函数 另一个检查 3*3 block 条件。 但是他不满意,有谁能很好的回答这个问题吗? 我发现这个堆栈溢出链
# include int check(int a,int b); int check1(int a,int b,int c,int d); void recursive(int x,int pos
我是一名优秀的程序员,十分优秀!