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 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你...