数独算法
?
?
最近迷上了玩數獨。每次我玩上了什么游戲,總想自己也做一個。于是就自己寫了一個數獨的生成算法。
最終的成果是這樣的:
程序能很快速的生成各種隨機的數獨數組,快到什么程度呢?以每次生成或者回溯一個格子的數字算一步,我的算法每次只需要200或者300多步就能生成一個完整的可解數獨。快的時候,80多步就生成了,基本感覺不到生成的時間消耗。這樣的效率,對比了網上的一些數獨生成算法,我個人感覺已經很高了。
?
其實我的算法也是和常規的數獨求解一樣,逐個格子去對比行、列和九宮格里面其他數字,如果可以,就放一個隨機數,如果不行,就回溯。不過我做了一個記錄每一個格子里面所有曾經嘗試過的數字,然后在每次新的隨機或者回溯的時候,先把這些用過的確定不對的數字給排除了,再在剩下可用的數字里面做隨機提取。這樣做,可以說就把整個流程變成了在一個可控的范圍內,不會出現之前看的一些算法可能出現的死循環或者次數過多的情況了。
對于一個數獨游戲來說,生成方面的算法已經解決了,還差的屏蔽某些格子,然后還要考慮多個解法的可能性的問題了。
總結
- 上一篇: 安利一个截图神器——Sinpaste
- 下一篇: 【均匀分布和正态分布】