数独をとくプログラム
C初心者です。大学生です。
タイトルの通り、Cで数独を解くプログラムを考えています。
数独については
http://www.nikoli.co.jp/puzzles/1/
をご参照ください。
で、数独にも難易度があり、初めからある程度数字が埋まっている(簡単な)
問題を解くプログラムは作ることが出来ました。
単純に、各マスの構造体Cellに対してsign[1],sign[2],,,,,sign[9]を定義し、
それが1なら可能性あり、0なら可能性なし、として
(例えばsign2]==1,sign[5]==0ならそのマスは2になる可能性はあるが5になることはない)
丹念に各マスに対してそのマスが属するブロック、列、行を調べて最後まで1であるflagを探すようにしたのです。
しかし初めから埋まっている数字が少ないと(難しいと)そもそも回答が1通りでない、
などの理由から上記のアルゴリズムでは解くことが出来ません。
あきらかにどこかをあてずっぽに仮定する作業(バックトラック?)
が必要になりそうです。
・・・が、それをどうやって実現したらいいかで行き詰っています。
どうか知恵を貸してください。よろしくお願いいたします。。。