內容 :
數獨是一種源自18世紀末的瑞士數學家歐拉(Leonhard Euler)所創造的拉丁方塊游戲。
在9格寬×9格高的大九宮格中有9個3格寬×3格高的小九宮格,已經有一些數字在裡面了(但並非一定採用數字,例如採用字母a,b,c...),根據這些數字,運用你的邏輯和推理,在其他的空格上填入1到9的數字,但是要注意了,每個數字在每個小九宮格內不能重複,每個數字在每行、每列也不能出現一樣的數字。 這種遊戲只需要邏輯思維能力,與數字運算無關。雖然玩法簡單,但數字排列方式卻千變萬化,所以不少教育者認為數獨是鍛鍊腦筋的好方法。 (wikipedia)
現在我們可以用程式來判斷一個九宮格數字是不是一個數獨的正解。
在9格寬×9格高的大九宮格中有9個3格寬×3格高的小九宮格,已經有一些數字在裡面了(但並非一定採用數字,例如採用字母a,b,c...),根據這些數字,運用你的邏輯和推理,在其他的空格上填入1到9的數字,但是要注意了,每個數字在每個小九宮格內不能重複,每個數字在每行、每列也不能出現一樣的數字。 這種遊戲只需要邏輯思維能力,與數字運算無關。雖然玩法簡單,但數字排列方式卻千變萬化,所以不少教育者認為數獨是鍛鍊腦筋的好方法。 (wikipedia)
現在我們可以用程式來判斷一個九宮格數字是不是一個數獨的正解。
輸入說明 :
輸入的每一組測試資料均為 9 × 9 的矩陣,且全部為 1~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
範例輸出:
no yes
標籤:
import java.util.*;
public class a016 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[][] Sudoku=new int[9][9];
int i,j;
while(sc.hasNext()){
for(i=0;i<9;i++){
for(j=0;j<9;j++){
Sudoku[i][j]=sc.nextInt();
}
}
boolean flag=true;
int total=0;
for(j=0;j<9;j++){
total=0;
for(i=0;i<9;i++){
total+=Sudoku[i][j];
}
if(total!=45)
flag=false;
}
for(i=0;i<9;i++){
total=0;
for(j=0;j<9;j++){
total+=Sudoku[i][j];
}
if(total!=45)
flag=false;
}
for(i=0;i<9;i+=3){
for(j=0;j<9;j+=3){
total=0;
total+=Sudoku[i][j]+Sudoku[i][j+1]+Sudoku[i][j+2]
+Sudoku[i+1][j]+Sudoku[i+1][j+1]+Sudoku[i+1][j+2]
+Sudoku[i+2][j]+Sudoku[i+2][j+1]+Sudoku[i+2][j+2];
if(total!=45)
flag=false;
}
}
if(flag==true)
System.out.println("yes");
else
System.out.println("no");
}
}
}
沒有留言:
張貼留言