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;
}



 

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