hdu2151: Worm

hdu2151: http://acm.hdu.edu.cn/showproblem.php?pid=2151
题意:给出n棵树、p、t分别表示虫的起始树和终点树,m为m分钟后到达t,求最多有多少中走法能从p到t,每次移动只能移向左或者右边的树 解法:dp:dp[i][j]表示到达第j棵树,前i分钟的走法数,则转移方程为:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1],注意初始化。
code:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
int dp[150][150];
int main()
{
    int n,p,m,t;
    while(scanf("%d%d%d%d",&n,&p,&m,&t)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        dp[0][p]=1;            //起点初始化为1
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(j-1>=1)
                    dp[i][j]+=dp[i-1][j-1];
                if(j+1<=n)
                    dp[i][j]+=dp[i-1][j+1];
            }
        }
        printf("%d\n",dp[m][t]);
    }
}
/*input:
3 2 4 2
3 2 3 2
output:
4
0*/

posted on 2012-07-25 15:59  acmer-jun  阅读(142)  评论(0编辑  收藏  举报

导航