【发布时间】:2015-07-02 14:57:15
【问题描述】:
我正在编写 c 代码来检查给定的矩阵是否是有效的数独解决方案。 输入将是 n*n 大小的矩阵。 我已经编写了代码来检查行和列,但我没有得到如何验证 sqrt(n)*sqrt(n) 大小的网格。
我的代码在这里
#include<stdio.h>
int main()
{
int i,j,count=0,sumrow;
int sumcol;
int n;
scanf("%d",&n);
int arr[n+1][n+1];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&arr[i][j]);
for(i=1;i<=n;i++)
{
sumcol=0;
for(j=1;j<=n;j++)
sumcol+=arr[j][i];
if(sumcol!=(n*(n+1)/2))
count++;
}
for(i=1;i<=n;i++)
{
sumrow=0;
for(j=1;j<=n;j++)
{
sumrow+=arr[i][j];
}
// printf("%d\n",sumrow);
if(sumrow!=(n*(n+1)/2))
count++;
}
//printf("count%d ",count);
if(count==0)
printf("yes");
else
printf("no");
return 0;
}
【问题讨论】:
-
你有什么问题?
-
我不知道如何验证数独的子网格。例如,对于 9*9 数独,我们有 3*3 的 9 个网格。
-
在 C 中,我们从 0 开始计数,而不是从 1 开始计数。您的循环应该是 for(i=0;i
-
@steve 我已经分配了 n+1 x n+1 大小的数组