相信大家都玩过“九宫格”这个游戏!下面我就再简述一下规则,在一个9*9的网格中填数字1~9,只要使得1~9这9个数字在每行和每列出现且仅出现一次即可。现给出一个这样的9*9矩阵,判断它是否满足上述规则,并求两条对角线和。
输入一个9*9数的矩阵。
输出有两行。第一行:如果输入的矩阵满足所述规则,输出YES;否则输出NO。第二行:两条对角线的和,大的在前面。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10][10],i,j,k,sum=0,s1=0,s2=0;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
for(k=1;k<=9-j;k++)
{
if(a[i][j]==a[i][j+k])
{
sum+=1;
}
}
}
}
for(j=1;j<=9;j++)
{
for(i=1;i<=9;i++)
{
for(k=1;k<=9-i;k++)
{
if(a[i][j]==a[i+k][j])
{
sum+=1;
}
}
}
}
if(sum==0)
printf("YES\n");
else if(sum>=1)
printf("NO\n");
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(i==j)
{
s1=s1+a[i][j];
}
else if(i==10-j)
{
s2=s2+a[i][j];
}
}
}
s2=s2+a[5][5];
if(s1>=s2)
{
printf("%d %d\n",s1,s2);
}
else
{
printf("%d %d\n",s2,s1);
}
return 0;
}