時間限制:1000 ms | 記憶體限制:65535 kb
難度:4
描述小明十分聰明,而且十分擅長排列計算。比如給小明乙個數字5,他能立刻給出1-5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對不對。
輸入第一行輸入整數n(1輸出
在1-n中選取m個字元進行全排列,按字典序全部輸出,每種排列佔一行,每組資料間不需分界。如樣例
樣例輸入
2樣例輸出3 14 2
1231213
1421
2324
3132
3441
4243
題目就是求字串123..n的全排列的前m個字元,將123..n進行全排列,每個排列的前m個字元即為所求,注意重複的字元
#include #include對其空間複雜度優化,不需要用set儲存每個排列,只需記住前乙個排列,如果現在排列不等於前乙個排列才輸出,利用next_permutation函式時按照字串大小輸出的#include
#include
#include
using
namespace
std;
intmain()
while
(next_permutation(str.begin(),str.end()));
copy(res.begin(),res.end(),ostream_iterator
(cout,"\n"
)); }
}
優化後的**
#include #include#include
using
namespace
std;
intmain()
}while
(next_permutation(str.begin(),str.end()));
}}
擅長排列的小明
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 小明十分聰明,而且十分擅長排列計算。比如給小明乙個數字5,他能立刻給出1 5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對...
擅長排列的小明
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 小明十分聰明,而且十分擅長排列計算。比如給小明乙個數字5,他能立刻給出1 5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對...
擅長排列的小明
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 小明十分聰明,而且十分擅長排列計算。比如給小明乙個數字5,他能立刻給出1 5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對...