解题思路
采用递推/动态规划
定义s[n]为上到n级台阶的方案数
那么第i级台阶可以由i-a、i-b、i-c分别到达(a、b、c为每次可上的台阶数)
那么s[i]=s[i-a]+s[i-b]+s[i-c]
代码
#include <stdio.h>
int s[30];
int main() {
int n, a = 1, b = 2, c = 3;
scanf("%d", &n);
s[0] = 1;
for (int i = a; i <= n; i++) {
if (i >= a)
s[i] += s[i - a];
if (i >= b)
s[i] += s[i - b];
if (i >= c)
s[i] += s[i - c];
}
printf("%d", s[n]);
return 0;
}