巧妙的用 n 表示 第n/9行第n%9列 (0是第一个数)。
巧妙的用 row = (n/9)/33; col = n%9/33; 表示数独里面的小正方形(行、列)。那么遍历数独就至于要一个 n即可。 (0<=n < 81)
因为数独答案唯一,所以只要找到一个正确的,就可以 exit(0); 了。
#include <iostream>
#include <cstdlib> //exit(0) 强制退出。(数独只有唯一解)
using namespace std;
int a[9][9];
//n为第n/9行第n%9列 //巧妙的用 n 表示了 行&列中所有位置
bool judge(int n,int i) //判断 第n/9行第n%9列 数字 i 是否合法
{
for(int j=0;j<9;j++)
{
if(a[n/9][j] == i) //检查行是否合法
return false;
if(a[j