檢視數獨是否有效

2021-10-10 08:44:37 字數 778 閱讀 5949

例如board[2][2]一定是第0個box,board[4][7]一定是第5個box,顯然每個數屬於哪個box就只取決於縱座標,縱座標為0/1/2的都屬於box[0],縱座標為3/4/5的都屬於box[1],縱座標為6/7/8的都屬於box[2].也就是j/3.

而對於9x9的矩陣,我們光根據j/3得到0/1/2還是不夠的,可能加上乙個3的倍數,例如加0x3,表示本行的box,加1x3,表示在下一行的box,加2x3,表示在下兩行的box, 這裡的0/1/2怎麼來的?和j/3差不多同理,也就是i/3。

#include

#include

using

namespace std;

bool

isvalid

(vectorchar

>>

& n)

;//判斷包含該數的行中是否重複

int col[9]

[9]=

;//判斷包含該數的列中是否重複

int box[9]

[9]=

;//判斷包含該數的9*9方格中是否重複

for(

int i =

0; i <

9; i++)}

return

true;}

intmain()

,,,,

,,,,

};if(

isvalid

(a))

else

cout <<

"無效"

;}

有效的數獨

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...

有效的數獨

題目 判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。說明上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用...

有效的數獨

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...