C问题中的数独检查器

时间:2015-08-30 22:03:45

标签: c arrays computer-science puzzle sudoku

我为我的班级配备了数独检查器,我的任务是能够创建一个代码,询问用户想要解决多少个谜题然后他们自己输入所有数字。在输入所有数字后,输出将是"是"或"否"作为对谜题是否正确的回应。到目前为止,我已经能够操纵代码让用户输入所有数字,但我仍然坚持如何能够检查同一行,列和3x3方格中的每个数字是否都不是重复。关于如何帮助我开始检查的任何提示都会感激不尽,因为我完全被这部分困扰了。

到目前为止我的代码

#include <stdio.h>
#define COL 9

int main (void) 
{
int n, i, j,array[100][COL];
int check=0;

scanf("%d", &n); //Enter how many puzzles you want to solve

//For loop that goes through every position in the puzzle(s)
for(i=0;i<n*9;i++)
{
  for(j=0;j<COL;j++)
    {
        //array[i][j]=0;
        //printf("Array[%d][%d]=%d\n", i,j,array[i][j]);
    scanf("%d", &array[i][j]); //User entry for puzzle(s)
    }
}
return 0;
}

2 个答案:

答案 0 :(得分:1)

首先,您不需要100号的数组。

然后,你的问题是什么?首先,您必须阅读用户的输入,这是您基本上要做的。

之后,您必须执行3次检查:

  • 对于每一行/列:
    • 给定行中的每个项目必须是uniq
    • 给定列中的每个项目必须是uniq
  • 对于每个&#34;子阵列&#34; (你在这里静静地知道,不要试图在这里使用),你必须适用同样的规则。

如果您展示了一些代码,我们会帮您解决问题。其他意见,去完成这件事。

答案 1 :(得分:0)

当前声明数组的方法(作为2d矩阵)存在问题。

建议声明一个3d数组:int array [numArrays] [9] [9];

然后通过3级嵌套循环遍历这些数组。

outer loop for each separate array, 
middle loop for each row, 
inner loop for each column.    

即便如此,用户希望将81个条目乘以数组的数量是值得怀疑的。

如果用户要输入完成的suduku数组,那可能是必要的,

但是,如果用户只输入未解析数组的初始值,

如果用户可以输入行,列,值可能会好得多。

用户仍有很多(容易出错的)条目。

让用户填写数据文件(或文件)并且程序能够快速读入文件可能非常值得。

这样的文件看起来可能类似于:

1          <-- array number
12_5_7_9_  <-- value for first row columns
etc        <-- value for second through ninth row columns
           <-- when _ means entry empty
           <-- blank line between array initial values