C爬楼梯问题n级楼梯每次可以爬123级一共步数为m

(分钟前 更新) 471 5602

最新回答

include <iostream>
include <string>
using namespace std;

int n,m;//由题,n为级数,m为步数
long long cnt0;//统计情况总数
void dfs(int step_climb,string ans,int left)//step_climb为已经走了几步
{//ans为最后输出的字符串答案,left为剩余的台阶级数

if(step_climb>m||left<0)//如果走了不止m步或者走过头(台阶剩余为负)
{
return ;
}
if(step_climbm&&left0)//如果正好走m步并且没有台阶剩余
{
ans.erase(ans.begin());//删去多余的-连接号
cout<<ans<<endl;//输出答案
cnt++;//计数器+1
return;
}

dfs(step_climb+1,ans+"-1",left-1);//向三种情况递归搜索,ans添加当前这一步的级数
dfs(step_climb+1,ans+"-2",left-2);
dfs(step_climb+1,ans+"-3",left-3);
}

int main()
{
cin>>n>>m;
dfs(0,"",n);
cout<<"一共有"<<cnt<<"种情况"<<endl; 
}

若有疑问欢迎回复

bonbean棒冰 2024-05-15

扩展回答

热门问答

装修专题

首页 >  C爬楼梯问题n级楼梯每次可以爬123级一共步数为m

其他人还看了

页面运行时间: 0.024152994155884 秒