2011-06-07 17:33:35Morris
d810. 大朋友下樓梯
http://zerojudge.tw/ShowProblem?problemid=d810
內容 :
傳說,有個遊戲叫做大朋友下樓梯,這個遊戲有三種難度,簡單中等困難。
三種難度的差別是,簡單的難度大朋友一次只能下樓梯 1格
中等的是則是,大朋友一次可以下樓梯 1格或 2格
困難的比較具有挑戰性,大朋友一次可以下 1格、 2格或 3格
現在我們想知道,大朋友有幾種下樓梯的方法可以走到地下k樓
對了,有一個限制是,大朋友不能上樓梯只能下樓梯
三種難度的差別是,簡單的難度大朋友一次只能下樓梯 1格
中等的是則是,大朋友一次可以下樓梯 1格或 2格
困難的比較具有挑戰性,大朋友一次可以下 1格、 2格或 3格
現在我們想知道,大朋友有幾種下樓梯的方法可以走到地下k樓
對了,有一個限制是,大朋友不能上樓梯只能下樓梯
輸入說明
:
給定兩個正整數 t, k , t代表遊戲難度,值為1~3 分別代表,簡單中等困難。
k則是一個負數,代表地下k樓(0>k>-20)
包含多筆測試資料。
k則是一個負數,代表地下k樓(0>k>-20)
包含多筆測試資料。
輸出說明
:
輸出大朋友走到地下K層後的方法數。
範例輸入 :
1 -1 1 -2 2 -1 2 -2 2 -3 2 -4 3 -1 3 -2 3 -3
範例輸出 :
1 1 1 2 3 5 1 2 4
提示
:
出處
:
/**********************************************************************************/
/* Problem: d810 "大朋友下樓梯" from */
/* Language: C */
/* Result: AC (4ms, 260KB) on ZeroJudge */
/* Author: morris1028 at 2011-06-02 22:40:47 */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
main() {
int a, b, c;
int DP[4][20] = {};
DP[1][1] = 1, DP[2][0] = 1, DP[2][1] = 1, DP[3][0] = 1, DP[3][1] = 1;
for(a = 1; a < 4; a++)
for(b = 2; b < 20; b++)
for(c = 1; c <= a && b-c >= 0; c++)
DP[a][b] += DP[a][b-c];
while(scanf("%d %d", &a, &b) == 2)
printf("%d\n", DP[a][abs(b)]);
return 0;
}
上一篇:d809. 黑暗土地
下一篇:d815. 水火不容II