ACM 擅長排列的小明

2022-05-27 23:09:09 字數 1124 閱讀 5852

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:4

描述小明十分聰明,而且十分擅長排列計算。比如給小明乙個數字5,他能立刻給出1-5按字典序的全排列,如果你想為難他,在這5個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對不對。

輸入第一行輸入整數n(1輸出

在1-n中選取m個字元進行全排列,按字典序全部輸出,每種排列佔一行,每組資料間不需分界。如樣例

樣例輸入

2

3 14 2

樣例輸出

123

1213

1421

2324

3132

3441

4243

題目就是求字串123..n的全排列的前m個字元,將123..n進行全排列,每個排列的前m個字元即為所求,注意重複的字元

#include #include 

#include

#include

#include

using

namespace

std;

intmain()

while

(next_permutation(str.begin(),str.end()));

copy(res.begin(),res.end(),ostream_iterator

(cout,"\n"

)); }

}

對其空間複雜度優化,不需要用set儲存每個排列,只需記住前乙個排列,如果現在排列不等於前乙個排列才輸出,利用next_permutation函式時按照字串大小輸出的

優化後的**

#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個數字中選出幾個數字讓他繼續全排列,那麼你就錯了,他同樣的很擅長。現在需要你寫乙個程式來驗證擅長排列的小明到底對...