hdu 核反应堆 动态规划

来源:互联网 发布:Android list内存优化 编辑:程序博客网 时间:2024/05/16 12:31
某核反应堆有两类事件发生:
高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点;
低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点。

假定开始的时候(0微秒)只有一个高能质点射入核反应堆,每一微秒引起一个事件发生(对于一个事件,当前存在的所有质点都会撞击核子),试确定n微秒时高能质点和低能质点的数目。

输入:

输入含有一些整数n(0≤n≤33),以微秒为单位,若n为-1表示处理结束。
可以使用long long int对付GNU C++,使用__int64对付VC6

# include <stdio.h>
02 
03 
04long long dp[40][2] = {1, 0} ;
05 
06 
07int main ()
08{
09    int i, n ;
10    for (i = 1 ; i<= 33 ; i++)
11    {
12        dp[i][0] = dp[i-1][0]*3 + dp[i-1][1]*2 ;
13        dp[i][1] = dp[i-1][0] + dp[i-1][1] ;
14    }
15     
16    while (~scanf ("%d", &n) && n != -1)
17        printf ("%I64d, %I64d\n", dp[n][0], dp[n][1]) ;
18 
19    return 0 ;
20}


0 0