nefu 449 超级楼梯 &&nefu 911 跨楼梯
nefu 449 超级楼梯
Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
2 2 3
Sample Output
1 2
//最近老是看递归题看多了,结果一直在想用递归,,,其实这是一道非常非常非常可爱的递推题
#include <iostream> using namespace std; int num[45]; int ans(int n) { num[1]=1; num[2]=2; for(int i=3;i<=n;i++) num[i]=num[i-1]+num[i-2]; return num[n]; } int main() { int m,n; cin>>n; while(n--) { cin>>m; cout<<ans(m-1)<<endl; } return 0; }
nefu 911 跨楼梯
Description
小明要上楼,有三种走法,一次迈一个台阶,或者一次迈两个台阶,或者一次迈三个台阶,小明回家到楼上有n个台阶,那小明一共有多少种迈法能回家呢?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n。
Output
对于每个测试实例,输出迈法数。
Sample Input
1 2 3
Sample Output
1 2 4
//再做一道,加深印象;;
#include <iostream> using namespace std; long long num[100000000]; long long ans(int n) { num[1]=1; num[2]=2; num[3]=4; for(int i=4;i<=n;i++) num[i]=num[i-1]+num[i-2]+num[i-3]; return num[n]; } int main() { int n; while(cin>>n) { cout<<ans(n)<<endl; } return 0; }
你若是天才,我便是疯子