巨水的dp。
思路很简单:每次dp[i]都是和dp[i-1]时候的0的个数和1的个数有关而已。
打表之后发现是斐波那契数列。。。。。。
#include<iostream>
using namespace std;
const int N=50;
long long int dp[N];
int n;
void solve()
{
dp[1]=2;
long long a=1,b=1;
for(int i=2;i<=45;i++)
{
long long tmp=a+b;
b=a;
a=tmp;
dp[i]=a+b;
}
}
int main()
{
solve();
scanf("%d",&n);
int tmp;
for(int i=1;i<=n;i++)
{
scanf("%d",&tmp);
printf("Scenario #%d:\n%lld\n\n",i,dp[tmp]);
}
return 0;
}