821. 跳台阶(acwing水题记)
作者:互联网
一个楼梯共有 nn 级台阶,每次可以走一级或者两级,问从第 00 级台阶走到第 nn 级台阶一共有多少种方案。
输入格式
共一行,包含一个整数 nn。
输出格式
共一行,包含一个整数,表示方案数。
数据范围
1≤n≤151≤n≤15
输入样例:
5
输出样例:
8
code
法1:递归
#include <cstdio>
using namespace std;
int n;
int search(int x){
if(x == 1 || x == 0)
return 1;
return search(x-1) + search(x-2);
}
int main(){
scanf("%d", &n);
printf("%d", search(n));
return 0;
}
法2:递推
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
int n;
scanf("%d", &n);
int a[n+1];
memset(a, 0, sizeof a);
a[0] = 1;
a[1] = 1;
for(int i=2; i<=n; i++)
a[i] = a[i-1] + a[i-2];
printf("%d", a[n]);
return 0;
}
法3:递推+滚动数组
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
int n;
scanf("%d", &n);
int a[2];
memset(a, 0, sizeof a);
a[0] = 1;
a[1] = 1;
for(int i=2; i<=n; i++)
a[i & 1] = a[i & 1] + a[!(i & 1)];
printf("%d", a[n & 1]);
return 0;
}
标签:search,nn,int,scanf,using,题记,include,821,acwing 来源: https://blog.csdn.net/m0_61067261/article/details/120390941