題目:爬樓梯,往上爬一次可爬1步或是2步,不可往下走
輸入:樓梯階數
輸出:印出可能的步數,及總共的排列可能數目
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
for(int n; cin >> n; ) {
int dispN = n >> 1, count = 0;
for(int i = 0; i <= dispN; ++i) {
int diff = n - (i << 1); // 用兩個1 步換一個2步
string str_1(diff, '1'), str_2(i, '2'), str = str_1 + str_2; // 擺放當下符合階數1 步、2 步的可能
do
cout << str << endl;// 印出1 步 和 2步 的全排列
while(++count && next_permutation(str.begin(), str.end()));// 把排序好的步數做全排列 。 Count 記錄可能的方法數
}
cout << "Count: " << count << endl << endl;
}
return 0;
}
執行畫面