Vijos P1335 數獨驗證 謎題

2021-08-01 13:30:01 字數 2030 閱讀 3056

xx學校風靡一款智力遊戲,也就是數獨(九宮格),先給你乙個數獨,並需要你驗證是否符合規則。

具體規則如下:

每一行都用到1,2,3,4,5,6,7,8,9,位置不限,

每一列都用到1,2,3,4,5,6,7,8,9,位置不限,

每3×3的格仔(共九個這樣的格仔)都用到1,2,3,4,5,6,7,8,9,位置不限,

遊戲的過程就是用1,2,3,4,5,6,7,8,9填充空白,並要求滿足每行、每列、每個九宮格都用到1,2,3,4,5,6,7,8,9。

如下是乙個正確的數獨:

5 8 1 4 9 3 7 6 2

9 6 3 7 1 2 5 8 4

2 7 4 8 6 5 9 3 1

1 2 9 5 4 6 3 7 8

4 3 6 1 8 7 2 9 5

7 5 8 3 2 9 1 4 6

8 9 2 6 7 1 4 5 3

6 1 5 9 3 4 8 2 7

3 4 7 2 5 8 6 1 9

輸入n個數獨,你來驗證它是否違反規則.

第一行為數獨個數,第二行開始為第乙個數獨,之後為第二個,至第n個.

注意!每個數獨之間有乙個回車隔開!

若正確則輸出」right」若不正確則輸出」wrong」 輸出乙個換一行

2

5 8 1 4 9 3 7 6 2

9 6 3 7 1 2 5 8 4

2 7 4 8 6 5 9 3 1

1 2 9 5 4 6 3 7 8

4 3 6 1 8 7 2 9 5

7 5 8 3 2 9 1 4 6

8 9 2 6 7 1 4 5 3

6 1 5 9 3 4 8 2 7

3 4 7 2 5 8 6 1 9

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

right

wrong

各個測試點1s

1<=n<=20 (輸入的數獨個數)

不論輸入的數獨是錯誤的還是正確的,資料都保證每個數在1-9之間,即只會出現因為有相同的數而導致違反規則,而不會因為數字超出了1-9的範圍而違反規則.

問題鏈結:vijos p1335 數獨驗證

問題分析:需要做行、列和塊的值重複檢查。

程式說明

分別用3個陣列來標記行、列和塊的值重複檢查。

程式中編寫函式getblock()用於將行和列的值轉換為塊的值。

即使知道結果,還需要把剩餘資料讀入,以便後續處理。

題記:(略)

參考鏈結:poj3435 sudoku checker【謎題+數獨】

ac的c++程式如下:

#include #include using namespace std;

const int n = 3;

const int square = n * n;

int row[square][square];

int col[square][square];

int block[square][square];

/* 行列下標轉換為塊下標 */

int getblock(int row, int col, int n)

int main()

}cout << (okflag ? "right" : "wrong") << endl;

}return 0;

}

Vijos P1117數的劃分

將整數n分成k份,且每份不能為空,任意兩份不能相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入n,k 6乙個整數,即不同的分法。7 3樣例輸出1 每個測試點1s noip2001第二題 題解用f i j 表示將數i分成...

Vijos P1130數的計數 模擬

p1130數的計數 accepted 標籤 noip普及組2001 顯示標籤 我們要求找出具有下列性質數的個數 包含輸入的自然數n 先輸入乙個自然數n n 1000 然後對此自然數按照如下方法進行處理 l 不作任何處理 2 茬它的左邊加上乙個自然數,但該自然數不能超過原數的一半 3 加上數後,繼續按...

Vijos P1316 明明的隨機數

noip2006普及組第一題 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你...