最新消息:点击查看大S的省钱秘笈

Vijos P1335 数独验证 C语言版

Vijos题解 Slyar 102浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

背景 Background

BNUEP风靡一款智力游戏,也就是数独(九宫格),先给你一个数独,并需要你验证是否符合规则。

描述 Description

具体规则如下:
每一行都用到1,2,3,4,5,6,7,8,9,位置不限,
每一列都用到1,2,3,4,5,6,7,8,9,位置不限,
每3×3的格子(共九个这样的格子)都用到1,2,3,4,5,6,7,8,9,位置不限,
游戏的过程就是用1,2,3,4,5,6,7,8,9填充空白,并要求满足每行、每列、每个九宫格都用到1,2,3,4,5,6,7,8,9。
如下是一个正确的数独:
5 8 1 4 9 3 7 6 2
9 6 3 7 1 2 5 8 4
2 7 4 8 6 5 9 3 1
1 2 9 5 4 6 3 7 8
4 3 6 1 8 7 2 9 5
7 5 8 3 2 9 1 4 6
8 9 2 6 7 1 4 5 3
6 1 5 9 3 4 8 2 7
3 4 7 2 5 8 6 1 9

输入格式 Input Format

输入n个数独,你来验证它是否违反规则.
第一行为数独个数,第二行开始为第一个数独,之后为第二个,至第n个.
注意!每个数独之间有一个回车隔开!

输出格式 Output Format

若正确则输出”Right”若不正确则输出”Wrong” 输出一个换一行.

Tip:哎,这题真是跌宕起伏啊,不想考察每个数字使用的次数,那样太麻烦,于是就想到了每行每列每3*3小格的数字和为45,这样做完WA了,检查后发现不能边读入边判断,因为那样break后下次还是从中断的地方开始读,所以只能先读完再判断。可是再次WA了,考虑了一会恍然大悟,有数字全部都是5的情况。。。我XXXX

#include <stdio.h>

int sign,a[10][10];

void calc(int x)
{
int s1=0,s2=0,s3=0,i,j;
for(i=x;i<=x+2;i++)
{
for(j=1;j<=3;j++) s1+=a[i][j];
for(j=4;j<=6;j++) s2+=a[i][j];
for(j=7;j<=9;j++) s3+=a[i][j];
}
if((s1!=45)||(s2!=45)||(s3!=45)) sign=0;
}

int main()
{
int i,j,n,sum;
scanf("%d",&n);
while(n--)
{
sign=1;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=1;i<=9;i++)
{
sum=0;
for(j=1;j<=9;j++)
{
if(a[i][j]==5) sum++;
}
if (sum>1)
{
sign=0;
break;
}
}
if(sign)
{
for(i=1;i<=9;i++)
{
sum=0;
for(j=1;j<=9;j++) sum+=a[i][j];
if(sum!=45)
{
sign=0;
break;
}
}
}
if(sign)
{
for(j=1;j<=9;j++)
{
sum=0;
for(i=1;i<=9;i++) sum+=a[i][j];
if(sum!=45)
{
sign=0;
break;
}
}
}
if(sign) calc(1);
if(sign) calc(4);
if(sign) calc(7);
if(sign) printf("Right\n");
else printf("Wrong\n");
scanf("");
}
system("pause");
return 0;
}

转载请注明:Slyar Home » Vijos P1335 数独验证 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 谢谢分享!我就是边读入边判断结果悲催的检查了大半天都没发现这个原因。。。
    Phoenix3年前 (2014-01-26)回复
  2. @wendy 在模版的header.php里嘛,通常都是 可能是主题问题,也有可能是静态页面链接的问题 那个你直接插入那个分断符就OK了
    Slyar6年前 (2010-12-27)回复
  3. 膜拜一下,强烈的感受到了差距,以后常来学习学习。。。 请教几个问题吧 你的S那个logo怎么设置的? 点击文章标题出来404,看不见评论(是主题的问题?) 怎样让文章在主页上只显示100字,点[更多]到文章页面?(换主题前可以设置的,难道这又是主题的问题?)
    wendy6年前 (2010-12-26)回复