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;
}
若有疑问欢迎回复