6048:简单的数独

题目描述

数独 是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即3x3的大格)有齐19所有数字。游戏设计者会提供一部份的数字,使谜题只有一个答案。

    

当然这个题目不是给你一个数独让你来玩,而是给你一个错误的数独,让你来修改。

已知一个填满的数独中只有一个错误,请把它找出来并修改为正确的。

输入格式

只包含一组测试数据

每组测试数据是一个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;
}



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章