题目描述
数独 是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即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;
}