例如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 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...