问题:n级的台阶,每次可以跨一步,有m种跨法,求爬到第n阶台阶,共有多少种不同的爬法?
例: 一个猴子在一座30级台阶的山上爬山,猴子上山一步可跳1级,或3级,试求上山的30级台阶有多少种不同爬法
input:
30 2
1
3
output:
58425
input:
50 4
2
3
5
6
output:
106479771
#include<iostream>
using namespace std;
int main()
{
int i,j,k,n,m,stage[100]={0},step[100];
cin>>n>>m;
for(i=0;i<m;i++)
{
cin>>step[i];//需从小到大输入跨步方法
stage[step[i]]=1;//eg: step[0]=3,stage[3]=1 意味着第0种跨法(每次跨3级)可以一步跨到第stage[step[0]]级台阶上

本文探讨了猴子爬山问题,即在n级台阶中每次可以跨1步或m步,求解不同爬法的数量。例如,当有30级台阶且允许跳1步或3步时,总共有58425种不同的爬法。进一步分析了增加可跳步数如何影响爬法总数,例如在50级台阶中,允许跳2步、3步、5步和6步的情况下,爬法总数为106479771。
最低0.47元/天 解锁文章
838

被折叠的 条评论
为什么被折叠?



