當前位置:編程學習大全網 - 編程軟體 - C++ 爬樓梯問題 n級樓梯,每次可以爬1,2,3級,壹***步數為m

C++ 爬樓梯問題 n級樓梯,每次可以爬1,2,3級,壹***步數為m

#include?<iostream>

#include?<string>

using?namespace?std;

int?n,m;//由題,n為級數,m為步數

long?long?cnt=0;//統計情況總數

void?dfs(int?step_climb,string?ans,int?left)//step_climb為已經走了幾步

{//ans為最後輸出的字符串答案,left為剩余的臺階級數

if(step_climb>m||left<0)//如果走了不止m步或者走過頭(臺階剩余為負)

{

return?;

}

if(step_climb==m&&left==0)//如果正好走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;?

}

若有疑問歡迎回復

  • 上一篇:點數的解釋是什麽呢?
  • 下一篇:計算機考研專業課怎麽復習?
  • copyright 2024編程學習大全網