从现在开始,小编正式与你一起解决爬楼梯问题
问题1
假设你现在正在爬楼梯,楼梯有n级。每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部?
分析
要想解决这个问题,很明显,你有俩个解决办法,一个是模拟人脑处理问题的办法,动态规划法,一种是与人脑思维方式相反的方法设X法…此处烧脑中ing…(递归法)
小编重点带你研究递归的方法,动态规划法对于这道题很遗憾我想不到实现的方法。
我们以5为例
这就是小编所有的走路的过程,虽然图画的有点丑,但就是那个意思,每次只能走一步或者两步。我们要想知道我们有5 个台阶,每次只能走一步或者两步的情况的总数,只需要最下面的和加起来就可以,我们现在来解决为什么下面的相加就可以。
1.一个最下面就是一个可行的方案对不对
2.只剩下一个台阶有1种可以走的办法。 ,只剩下2个台阶有两种可以走的办法。
下面附上我的程序代码
#include <iostream>
using namespace std;
int sum=0;
//n个台阶,每个台阶最多可以走4个
int function(int n){
if(n==0)
{
return 0;
}
else if(n==1)
{
sum+=1;
return 1;
}
else if(n==2)
{
sum+=2;
return 2;
}
else if(n>2)
return function(n-1)+function(n-2);
}
int main(){
int n;
cin>>n;
function(n);
cout<<sum<<endl;
return 0;
}
代码解释
读懂这张图,或许你对递归有了一定的认识,这就是树。将不能解决的东西待定以下,等到树梢的时候再解决就把所有的情况都解决了。
问题2
小明参加一个大题比赛,答对了,加4分,答错或不答扣1分,有25道题,得了70分,求答对了几道。
#