条件を満す組み合せを生成するが、できるだけ余分なものを生成しないように
したつもり.
1 から n までの数から,k 個選ぶ組み合せのリストを生成する際に
採用されなかった残りの n-k 個の要素のリストをペアにするようにした
関数 comb を定義する.残りの部分には当然,既に採用した数ははいっていない.
comb' は和の制約を加え,さらに残りの組み合せ(リスト)が採用されたものより
辞書順で大きいものだけを採用するようにしてある.これによって,組み合せ
(リスト)のリスト同士の同一性をチェックしなくてすむ.
実行結果は以下のとおり.
% time ./magic 4
392
./magic 4 0.00s user 0.00s system 93% cpu 0.008 total
% time ./magic 5
3245664
./magic 5 47.19s user 0.40s system 99% cpu 47.590 total
nobsun
#4878()
[
Haskell
]
Rating3/3=1.00
Rating3/3=1.00-0+
1 reply [ reply ]