背景
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
copy
right
wrong
copy
各個測試點1s
1<=n<=20 (輸入的數獨個數)
不論輸入的數獨是錯誤的還是正確的,資料都保證每個數在1-9之間,即只會出現因為有相同的數而導致違反規則,而不會因為數字超出了1-9的範圍而違反規則.
1/*2**先判斷行 列的數是否滿足
3再用二位字首和判斷9個小九宮格是否滿足
4如果不判斷行 列中是否有數重複的話
5會wa乙個點 6*/
7 #include8 #include9
#define maxn 30
1011
using
namespace
std;
1213
intn,a[maxn][maxn];
14int
map[maxn][maxn];
1516
bool vish[11],visl[11
];17
18 inline void read(int&x)
21while(c>='
0'&&c<='
9')
22 x=x*f;23}
2425 inline bool
pd()
38if(sum!=45||cnt!=45) return
false;39
}40for(int i=1;i<=9;i++)
41for(int j=1;j<=9;j++)
42 map[i][j]=map[i][j-1]+map[i-1][j]-map[i-1][j-1]+a[i][j];
43for(int i=3;i<=9;i+=3)44
for(int j=3;j<=9;j+=3
) 48
return
true;49
}5051int
main()
60return0;
61 }
Vijos P1335 數獨驗證 謎題
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,位置不...
C 數獨遊戲 遞迴,回溯,驗證是否滿足數獨
你不去做,別人不知道你會做 送給我自己。題設 在9 9的數獨 內輸入幾個數字,自動完成數獨 準備 在充分理解遞迴,回溯之後,完成這個題目就不難了。但是高效能完成就還是得研究。原理概要 採用棧的資料結構模型存入已經輸入過得數獨 此時應該只有幾個 有數字,我們採用乙個標記數字記下這些數字位置,他們是不能...
構造數獨和解數獨
數獨,俗稱九宮格,由乙個9 9的網格組成,整個網格又分成9個3 3的小正方形網格,每個格仔有乙個數字 1 9 數獨滿足如下要求 1 每個數字在每一行只出現一次 2 每個數字在每一列只出現一次 3 每個數字在每個3 3的小區域中也只出現一次 如下圖所示,為我們比較常見的數獨形式,為乙個缺了數字的數獨,...