HDU2047-阿牛的EOF牛肉串
阿新 • • 發佈:2019-01-22
http://acm.hdu.edu.cn/showproblem.php?pid=2047
寫這道題程式碼不是關鍵的,因為只要知道公式就非常簡單,DP的題就是難在推導過程。如下:
設n位字串,最後一位是O的字串的個數為a[n],最後一位不是O的字串的個數是b[n], 總字串個數為x[n], 則有 x[n]=a[n]+b[n]; a[n]=b[n-1]; b[n]=2*x[n-1]; ====>x[n]=2*x[n-1]+2*x[n-2]
a[n]=b[n-1];這裡很關鍵,因為上一次這裡最後一定不是O,所以這一次在上一次最後加上O即可。
**還有一個比較有意思的公式a[i]=a[i-2]*6+a[i-3]*4;**只能說這類題方法很多,我還是需要多學習。
#include <stdio.h>
#include <string.h>
int main()
{ long long a[45];
a[0]=3;a[1]=8;
int n;
while(scanf("%d",&n)!=EOF)
{for(int i=2;i<=n;i++) a[i]=(a[i-1]+a[i-2])*2;
printf("%lld\n",a[n-1]);
}
}