a016
輸入說明 :
輸入的每一組測試資料均為 9 × 9 的矩陣,且全部為 1~9 的數字,每兩組九宮格之間以一空行作為分隔
輸出說明 :
yes or no
這題是先把陣列讀進來,然後檢查每一行跟每一列還有每一個3*3的區塊加起來有沒有45,區塊那邊還是雙層for迴圈 來加總,但是每次要跳三。
#include<stdio.h>
int CheckRow(int [9][9]);
int CheckColumn(int [9][9]);
int CheckBlock(int [9][9]);
int main()
{
int array[9][9];
int i,j;
while(scanf("%d",&array[0][0])!=EOF)
{
for(i=1;i<9;i++)
{
scanf("%d",&array[0][i]);
}
for(i=1;i<9;i++)
{
for(j=0;j<9;j++)
scanf("%d",&array[i][j]);
}
if(CheckRow(array)==1)
printf("no\n");
else if(CheckColumn(array)==1)
printf("no\n");
else if(CheckBlock(array)==1)
printf("no\n");
else
printf("yes\n");
}
return 0;
}
CheckRow(int array[9][9])
{
int flag=0;
int i,j;
int sum;
for(i=0;i<9;i++)
{
sum=0;
for(j=0;j<9;j++)
{
sum+=array[i][j];
}
if(sum!=45)
{
flag=1;
break;
}
}
return flag;
}
CheckColumn(int array[9][9])
{
int flag=0;
int i,j;
int sum;
for(j=0;j<9;j++)
{
sum=0;
for(i=0;i<9;i++)
{
sum+=array[i][j];
}
if(sum!=45)
{
flag=1;
break;
}
}
return flag;
}
CheckBlock(int array[9][9])
{
int flag=0;
int i,j;
int m,n;
int sum;
for(i=0;i<9;i+=3)
for(j=0;j<9;j+=3)
{
sum=0;
for(m=0;m<3;m++)
for(n=0;n<3;n++)
sum+=array[m+i][n+j];
if(sum!=45)
flag=1;
}
return flag;
}