终于找到一个没有大佬的题,我来水篇题解~
题目描述
一个楼梯共有 $n$ 级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。
输入格式
共一行,包含一个整数 $n$。
输出格式
共一行,包含一个整数,表示方案数。
数据范围
$1≤n≤15$
样例
输入样例:
5
输出样例:
8
解题思路
先自己手动列举一下,
台阶/级 | 步数/步 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 8 |
6 | 13 |
根据以上列举,不难发现,这TM
就是一斐波那契数列!
算法1
递归
说人话就是到这一级的步数等于到上一级的方案数和上上级的方案数,
而第一级台阶方案数为1,第二级台阶方案数为2,后面的步骤就是有手就行了。
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int n;
int dg(int dep)
{
if (dep == 1) return 1;
if (dep == 2) return 2; //终止条件
return dg(dep - 1) + dg(dep - 2);
}
int main()
{
scanf("%d", &n);
printf("%d\n", dg(n)); //用递归
return 0;
}
算法2
for循环
C++代码
#include <bits/stdc++.h>
using namespace std;
int a[20], n;
int main()
{
a[1] = 1;
a[2] = 2;
for (int i = 3; i <= 15; i++) //不要管他丫的,一共就15个,肝就对了
a[i] = a[i - 1] + a[i - 2];
scanf("%d", &n);
printf("%d\n", a[n]);
return 0;
}
点个赞再走呗【可爱】
菲波那切数列
好家伙,够粗暴(doge)
哈哈哈哈哈
逆天
整笑了哈哈哈
哈哈哈就喜欢你这样的哈哈哈
哈哈哈哈
14是610,我说我写的怎么对不上
暴力打表
这不是小学奥数题嘛
# 大佬牛逼
排列组合法
这个问题让我想起了当年看电影《少年班》时,孙红雷找到神人王大法时问的问题:二十层的台阶每次走一步或两步共多少步。王大法当然是脱口而出,而我后来算了半天。。。。
不明觉厉
有和我一样用排列组合做的么....
我也是这么想的,但是不知道怎么做
朋友我用公式做出来了,我发给你
大佬,也给我发一份呗
我也是,用两个函数来实现排列组合的C几几
头像不是lucy,差评
大佬帮我看看这个代码怎么改进呗,我也是用排列组合的,但不知道怎么用递归表示多个阶乘
刚看到,我估计你已经解决了hh
哈哈,确实,现在在学算法了
华罗庚讲过这道题awa,困难的问题简单化,先从一个台阶开始
新思路
牛
6
太强了,萌新膜拜
太棒了
蟹蟹支持
hhhhhh
666666
wow好帅哦
牛啊
同样的思路 不过你的快 我的比你多判断
佩服
#include [HTML_REMOVED]
#include [HTML_REMOVED]
#include [HTML_REMOVED]
using namespace std;
int jump(int n){
if(n==-1)
return 0;
if(n==0)
return 1;
return jump(n-1)+jump(n-2);
}
int main(){
int n;
cin>>n;
cout<<jump(n);
return 0;
}
6
tql
6