Ural 1225 Flags(DP)

来源:互联网 发布:淘宝1-5元 编辑:程序博客网 时间:2024/06/05 14:25

题目地址:Ural 1225

感觉刷DP的时候到了。。

这个题还是很简单的,用个二维数组,第一维表示当前位是什么颜色,只有1,2,3。第二维表示当前是第几维。由于蓝色只能在中间,所以统计只能统计当前位是白和红的时候。

代码如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL long longLL dp[4][50], sum[100];int main(){    LL n, i, j;    dp[1][1]=1;    dp[2][1]=1;    dp[3][1]=0;    sum[1]=2;    for(i=2;i<=50;i++)    {        dp[1][i]=dp[2][i-1]+dp[3][i-1]/2;        dp[2][i]=dp[1][i-1]+dp[3][i-1]/2;        dp[3][i]=dp[1][i-1]+dp[2][i-1];        sum[i]=dp[1][i]+dp[2][i];    }    while(scanf("%lld",&n)!=EOF)    {        printf("%lld\n",sum[n]);    }    return 0;}


0 0
原创粉丝点击