武汉十大装修公司 > C爬楼梯问题n级楼梯每次可以爬123级一共步数为m > 问答

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

include <iostream>。include <string>

问答分类 楼梯 数为 爬楼梯 网友:蓝SE妖蝶 来源:装修问答网 2024-07-01

最新回答

  • 1、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; 
    }

    若有疑问欢迎回复

相关问题

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

  • 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; 
    }

    若有疑问欢迎回复

网友推荐

 页面运行时间: 0.078543901443481 秒