将军鬼上身啦!

Description

打败万恶的ghost以后,将军准备回寝室告诉大伙儿这个消息,没想到杯具又发生了…
你知道有种鬼叫“路鬼”吗?让人莫名其妙的迷路,将军就被这种鬼上身了。将军本来要上楼的,但是因为鬼上身,他要不就上一层楼,要不就下一层楼,这个是随机的,他不能控制自己啦!
假设将军住在第M楼,刚开始将军在K楼,因为体力原因,将军只能上或者下N次楼,假设东6宿舍共有100层。现在问当体力消耗完的时候,将军刚好回到寝室那一层有多少种走法。

例如:将军住在5楼,将军能上或者下5次楼,现在在1楼,
那么将军将回不到寝室啦,为什么?我也不知道。 

Input

有多组测试数据,每组测试数据共一行,为M,N,K(0 < N < 21,0 < M,K < 101)的值,中间以空格分开,分别代表将军住在第几层,能移动几次和刚开始在第几层;

Output

对应每一组测试数据,输出体力消耗完时将军刚好回到寝室那一层的走法总数

Sample Input

 

1
2
3
44 5 41
5 5 1
Sample Output
1
2
5
0

 

 

 

 

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int n, m, k, i, j;
    while (cin >> m >> n >> k)
    {
        int dp[105][2];
        memset(dp, 0, sizeof(dp));
        dp[k][0] = 1;
        int d = 1;
        for (i = 0; i < n; i++)
        {
            for (j = 1; j <= 100; j++)
                dp[j][d] = dp[j - 1][1 - d] + dp[j + 1][1 - d];
            d = 1 - d;
        }
        cout << dp[m][1 - d] << endl;
    }
    return 0;
}
View Code

 

posted @ 2015-08-08 14:31  soldierwing  阅读(213)  评论(0编辑  收藏  举报