數獨
在9格寬×9格高的大九宮格中有9個3格寬×3格高的小九宮格
,每一列與每一行的數字均須包含 1~9,不能缺少,也不
能重複。每一小九宮格(3*3的九宮格)的數字均須包含 1~
9,不能缺少,也不能重複。
輸入一組測試資料為9x9的矩陣,判斷九宮格數字是不是一個
數獨的正解。
輸入說明 :
輸入九列數據,每一列輸入為9個整數分別由空格分開。
輸出說明 :
輸出Yes or No代表九宮格數字是不是一個數獨的正解。
輸入範例
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8
輸出範例
輸入範例
1 9 3 2 6 5 4 7 8
7 8 2 3 1 4 9 5 6
4 5 6 9 7 8 1 3 2
2 3 4 8 5 1 6 9 7
9 6 5 4 3 7 2 8 1
8 7 1 6 9 2 3 4 5
3 1 9 5 8 6 7 2 4
5 2 7 1 4 3 8 6 9
6 4 8 7 2 9 5 1 3
輸出範例
Yes
#include <stdio.h>
int main(){
int n[9][9];
int i=0,j=0,error=0;
int row=0,column=0;
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
scanf("%d",&n[i][j]);
}
}
for(j=0;j<9;j++){
for(i=0;i<9;i++){
row=row+n[i][j];
}
if(row!=45){
error=1;
break;
}
row=0;
}
for(i=0;i<9;i++){
for(j=0;j<9;j++){
column=column+n[i][j];
}
if(column!=45){
error=1;
break;
}
column=0;
}
for(i=0;i<9;i++){
for(j=0;j<9;j++){
if(i<3 && j<3){
a1=a1+n[i][j];
}
else if(i<6 && j<3){
a2=a2+n[i][j];
}
else if(i<9 && j<3){
a3=a3+n[i][j];
}
else if(i<3 && j<6){
a4=a4+n[i][j];
}
else if(i<6 && j<6){
a5=a5+n[i][j];
}
else if(i<9 && j<6){
a6=a6+n[i][j];
}
else if(i<3 && j<9){
a7=a7+n[i][j];
}
else if(i<6 && j<9){
a8=a8+n[i][j];
}
else if(i<9 && j<9){
a9=a9+n[i][j];
}
}
}
if(error==1 || a1!=45 || a2!=45 || a3!=45 || a4!=45 || a5!=45 || a6!=45 || a7!=45 || a8!=45 || a9!=45){
printf("No");
}
else{
printf("Yes");
}
}
/*
#include <stdio.h>
int main(){
int n[9][9];
int i=0,j=0,error=0,sum=0,nn=0,m=0,fault=0;
int row=0,column=0;
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
scanf("%d",&n[i][j]);
}
}
for(j=0;j<9;j++){
for(i=0;i<9;i++){
row=row+n[i][j];
}
if(row!=45){
error=1;
break;
}
row=0;
}
for(i=0;i<9;i++){
for(j=0;j<9;j++){
column=column+n[i][j];
}
if(column!=45){
error=1;
break;
}
column=0;
}
while(nn<=6){
while(m<=6){
for(i=0+nn;i<3+nn;i++){
for(j=0+m;j<3+m;j++){
sum=sum+n[i][j];
}
}
if(sum!=45){
fault=1;
break;
}
m+=3;
sum=0;
}
nn+=3;
}
if(error==1 || fault==1){
printf("No");
}
else{
printf("Yes");
}
}
*/