DFS求解數獨演算法

2021-08-28 10:34:23 字數 825 閱讀 9136

以前也想過很久解數獨的演算法,但是沒有得到很簡單的方法,某天看到某位學長的**,恍然大悟,本以為暴力搜尋會很花時間(10^81種可能),沒想到實際上由於各種限制,列舉次數竟然普遍小於10000次,用dfs便可實現每種可能都列舉。這樣計算乙個數獨就很快了(不到1ms),下面附上自己理解改動並加了注釋的**,dev編譯可能會效果好一些。

**:

#include #include#includechar map[9][9],xx;

int ans=0;

bool suit=false;

void position(int x,int y) ;

handle out=getstdhandle(std_output_handle);

setconsolecursorposition(out,pos);

}void hide()

void print(int x,int y)

bool check(int n,int v)

void dfs(int n)

if (map[x][y]!=0)

dfs(n+1);

else

for(int i=1;i<=9;i++)

if(check(n,i))

}int main()

if(i!=8||j!=8)

scanf("%c",&xx); //讀換行

}dfs(0); //求解

for(int i=0;i<9;i++)

printf("\n");

} system("pause");

}

巧用dfs解數獨問題 演算法筆記

巧妙的用 n 表示 第n 9行第n 9列 0是第乙個數 巧妙的用 row n 9 33 col n 9 33 表示數獨裡面的小正方形 行 列 那麼遍歷數獨就至於要乙個 n即可。0 n 81 因為數獨答案唯一,所以只要找到乙個正確的,就可以 exit 0 了。include include exit ...

java求解數獨(遞迴)

先來一些測試用例 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...

用SQL求解數獨 Sudoku

看來用xslt解數獨已經沒有挑戰性了,因為xslt是披著xml外衣的函式程式語言。所以閒人中的閒人們用新時代的彙編 sql,來解決數獨問題。當然不是sql 92了,而是用了oracle10g裡介紹的model語句。這麼看來,鄒鍵老大用sql解簡單演算法題也不算離譜。d oracle的model語句允...