您的位置:首页 > 其它

HDOJ 2151

2014-04-30 18:38 148 查看

思路:DP水,dp[i][j]表示第i分钟到第j棵树的种数,dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1],再注意下边界就行。

#include<iostream>
#include<cstdio>
#include<cstring>
#define MAX 105
using namespace std;
int dp[MAX][MAX];
int main(){
    int n, t, m, p;
    /* freopen("in.c", "r", stdin); */
    while(~scanf("%d%d%d%d", &n, &p, &m, &t)){
        memset(dp, 0, sizeof(dp));
        dp[1][p-1] = dp[1][p+1] = 1;
        for(int i = 2;i <= m;i ++){
            for(int j = 1;j <= n;j ++){
                if(j > 1 && j < n) dp[i][j] += dp[i-1][j+1] + dp[i-1][j-1];
                else if(j == 1) dp[i][j] += dp[i-1][j+1];
                else dp[i][j] += dp[i-1][j-1];
            }
        }
        printf("%d\n", dp[m][t]);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: