プロジェクトオイラー問114

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%20114
Problem 114 「ブロックの組み合わせ方の数え上げ その1」 †
ブロックを一列に並べるときの組み合わせ数をこたえる問題。

解法
自然な動的計画法で片が付きます。
特に解説することはありません。

#include<stdio.h>
#include<iostream>
const int LIMIT=52;
__int64 dp[LIMIT+1]={0};

int main(){
	__int64 all=0;
	for(int i=1;i<=48;i++){
		all+=dp[i];
 		__int64 add=all+1;
	for(int j=i+4;j<=LIMIT;j++){
			dp[j]+=add;
			add++;
 		}
		
	}
	std::cout<<dp[LIMIT]+1;
}
最終更新:2014年12月31日 07:51