hdu 2047 简单递推公式

mac2022-06-30  21

很简单的地推公式问题,给一个n,在这n个位置上面放 'E' '0' 'F',这三个字符,问可以拼出多少不同的字符来,排除有‘0''O'相连的情况。

当n位取'O'的时候,那么n-1位就只能去'E''F'这两种可能,对于后面n-2之后的位置就没有任何的限定了。。。

所以情况是1*2*f[n-2];

当n位去'E''F'时,那么对于n-1位置没有任何的限定。。。

所以情况是2*f[n-1]

综上所述:

f[n]=2*(f[n-1]+f[n-2])

接下来不说了...果断水题..

View Code 1  #include<iostream> 2  #include<stdio.h> 3  using namespace std; 4  int main() 5  { 6   int n; 7   __int64 dp[40]; 8   dp[1]=3,dp[2]=8; 9   for(int i=3;i<=40;i++)dp[i]=2*(dp[i-1]+dp[i-2]); 10   while(scanf("%d",&n)!=EOF) 11   { 12   printf("%I64d\n",dp[n]); 13   } 14   return 0; 15  } 16  

 

转载于:https://www.cnblogs.com/nuoyan2010/archive/2012/09/01/2667088.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)