※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


Problem 114 「ブロックの組み合わせ方の数え上げ その1」 †

直列な50マスを特定の規則のもと赤ブロックで埋めるとき何通りの埋め方があるか計算する問題。
詳細はリンク先参照のこと。



解法
手前から埋めていく動的計画法で片が付きます。
計算量は48回。


search(52,[_,_,Sum],_,_):-!,write([ans,Sum]).
search(Len,[X1,X2,X3],Sum,Add):-
 	!,
	Add1 is Add+X1,
	Sum1 is Sum+Add,
	Len1 is Len+1,
	write([Len1,Sum1,Add1]),nl,
	search(Len1,[X2,X3,Sum1],Sum1,Add1).

main114:-
	search(4,[1,1,1],1,1).