您的位置:首页 > 其它

ural 1225. Flags

2011-06-03 23:16 495 查看
纠结啊。。。。贴道水题。



我推的公式,用排列组合,过后看下discuss,居然是斐波那契数列的二倍。。情何以堪!!!



#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;
const int MAX = 50;
long long dp[MAX];
long long c[MAX][MAX];
int main()
{
	int n;
	
	fill(dp,dp+MAX,2);
	memset(c,0,sizeof(c));
	
	for(int i=0; i<MAX; i++)
	{
		c[i][0] = 1;
		c[i][1] = i;
	}
	
	for(int i=1; i<MAX; i++)
		for(int k=1; k<=i; k++)
			c[i][k] = (c[i-1][k] + c[i-1][k-1]);
			
	for(int i=3; i<=45; i++)
		for(int k=i-2; k>=0; k-- )
		{
			if( i-k-1 > k )
				break;
			dp[i] += 2*c[k][i-k-1];
		}
	scanf("%d",&n);
	
	printf("%lld/n",dp
);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: