数独错了
Sudoku bool wrong
本文关键字:错了 更新时间:2023-10-16
我已经接近完成一些事情,但它还不是完全完美的。。。假设验证数独网格是否有效。我已经向它抛出了7个网格,6/7,验证器成功了。这就是它失败的地方。它应该是无效的,因为中间列中有2个4,但我的程序将其分配为VALID。不知道为什么,提前谢谢!
-------------------------
| 9 5 3 | 2 6 7 | 1 4 8 |
| 6 7 1 | 5 8 4 | 9 3 2 |
| 2 4 8 | 9 1 3 | 7 5 6 |
-------------------------
| 7 1 4 | 6 9 2 | 5 8 3 |
| 5 2 9 | 7 3 8 | 4 6 1 |
| 3 8 6 | 4 5 1 | 2 9 7 |
-------------------------
| 4 6 7 | 3 2 5 | 8 1 9 |
| 1 9 5 | 8 7 6 | 3 2 4 |
| 8 3 2 | 4 1 9 | 6 7 5 |
-------------------------
我的验证码:
bool Verifier::verifySolution()
{
bool found[9];
for (int row = 0; row < 9; row++)
{
// set found elements false
for (int i = 0; i < 9; i++)
found[i] = false;
// Loop 9 col
for (int col = 0; col < 9; col++)
{
// Check if the digit in this col's been found within
// corresponding row
if (found[sudo[row][col] - 1])
return false; //
else
found[sudo[row][col] - 1] = true; //
}
}
int x = 0;
int y = 0;
for (int row = (x / 3) * 3; row < (x / 3) * 3 + 3; row++)
for (int col = (y / 3) * 3; col < (y / 3) * 3 + 3; col++)
if (row != x && col != y && found[sudo[row][col]] == sudo[x][y])
return false;
return true;
}
- 您没有检查列。第一个大的行循环,只检查每一行
- 最后一个区块似乎只是检查0,0区块,因为您还没有循环通过x,y组合
- 此外,您还需要为代码的后半部分重新清除找到的标志
据我所知,您没有验证列。您验证的是行和块,而不是列。
此外,对于每个块,您必须将找到的数组的所有条目重置为false(当您到达该部分时,也必须将每个列重置为false)。
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 首要问题的答案让值班员搞错了
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 如何正确使用 >=?(a+f()+c)>=0 错了吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 指针相关的UE4崩溃.我的指针哪里错了?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 理解C++内存顺序,我错了吗?