題目描述
數獨 是一種邏輯性的數字填充遊戲,玩家須以數字填進每一格,而每行、每列和每個宮(即3x3的大格)有齊1至9所有數字。遊戲設計者會提供一部份的數字,使謎題只有一個答案。
當然這個題目不是給你一個數獨讓你來玩,而是給你一個錯誤的數獨,讓你來修改。
已知一個填滿的數獨中只有一個錯誤,請把它找出來並修改爲正確的。
輸入格式
只包含一組測試數據
每組測試數據是一個9*9的矩陣。
輸出
請找出錯誤並修改,然後輸出正確的數獨。輸出9*9的數獨
每行9個整數,每個整數之後接一個空格。
詳細請看樣例輸入,輸出。
以樣例爲準。
(輸入的數獨僅含一個錯誤)
樣例輸入
5 3 4 6 7 8 9 1 2
6 7 2 1 9 5 3 4 8
1 9 8 3 4 2 5 6 7
8 5 9 7 6 1 4 2 3
4 2 6 8 5 3 7 9 1
7 1 3 9 2 3 8 5 6
9 6 1 5 3 7 2 8 4
2 8 7 4 1 9 6 3 5
3 4 5 2 8 6 1 7 9
樣例輸出
5 3 4 6 7 8 9 1 2
6 7 2 1 9 5 3 4 8
1 9 8 3 4 2 5 6 7
8 5 9 7 6 1 4 2 3
4 2 6 8 5 3 7 9 1
7 1 3 9 2 4 8 5 6
9 6 1 5 3 7 2 8 4
2 8 7 4 1 9 6 3 5
3 4 5 2 8 6 1 7 9
#include<stdio.h>
int main()
{
int s[9][9],i,j,sum1,sum2,a,b,sum=0;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
scanf("%d",&s[i][j]);
for(i=0;i<9;i++)
{
sum1=0;
for(j=0;j<9;j++)
sum1+=s[i][j];
if(sum1!=45)
a=i;
}
for(j=0;j<9;j++)
{
sum2=0;
for(i=0;i<9;i++)
sum2+=s[i][j];
if(sum2!=45)
b=j;
}
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(i!=a || j!=b)
sum+=s[i][j];
s[a][b]=405-sum;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
printf("%d ",s[i][j]);
printf("\n");
}
return 0;
}