HDU 2151 Worm

http://acm.hdu.edu.cn/showproblem.php?pid=2151

简单dp,动态转移方程:dp[N][T]=dp[N-1][T-1]+dp[N-1][T+1],注意判断边界是否存在

#include<stdio.h>
#include<string.h>
int main()
{
    int N,P,M,T,i,j;
    int dp[110][110];
    while(scanf("%d%d%d%d",&N,&P,&M,&T)!=EOF)
    {
        memset(dp,0,sizeof(dp));
        dp[0][P]=1;
        for(i=1;i<=M;i++)
          for(j=1;j<=N;j++)
          {
              if(j-1>0)
              {
                  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]);
    }
    return 0;
}
View Code

 

posted @ 2013-08-22 21:20  执着追求的IT小小鸟  阅读(149)  评论(0编辑  收藏  举报