>>467 の最初のアイディアを借用しました。
しかし、解のためのリストは別には準備しません。
例にあげられたリストの扱い方は好みじゃないのでちと変えました。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=71

終了判定に難がありますが、私としてはリストを使うこの方法は好ましく思います。
単純に大きな配列を準備する方法は、一般化が行き届いていないのが不満です。