110UVA沒有迴圈的快速排序STL

2021-07-26 20:37:32 字數 1452 閱讀 7904

參考了

的思路:

關鍵在於如何生成給定數量元素的全排列,很自然的使用遞迴演算法。考慮n = 3的情況,相應的3個變數為a, b, c。在結果集裡加入a作為初始化,之後b可以在a前面或後面2種位置可以插入,分別代表b < a或b > a的情況。這樣就可以生成第1級的if-else語句,並遞迴呼叫至2級。對於"ba"順序的結果集,c有三種位置可以插入,對應的語句應該是: 123

45

6ifc < bthen

...

elseifc < athen

...

else

...

由此生成第2級的if-else語句。再遞迴呼叫至第3級,發現已到達最高端,輸出結果並返回。

這道題有乙個需要特別注意的地方,生成的第一道**前不要有任何空行,每段**後也不要緊跟著空行。而是從第二段**開始,頭部需要加乙個空行。如果沒有注意這個問題,會得到pe。

自己寫的**:

#includeusing namespace std;

#include#includechar twospace[3]=" ";

void recs(int cur,int n,listclist);

int main()

puts(" : integer;"); //

puts("begin");

printf("%s"," readln(");

for(int i=0; i < n;i++)

puts(");");

listclist;

clist.push_back('a');

recs(0,n,clist);

puts("end.");

if(m) putchar('\n'); }}

void recs(int cur,int n,listclist)

puts(")");

return;

} list::iterator it = clist.begin();

list::iterator end = clist.end();

list::iterator t;

for(; it != end;)

//for(int i=0; i<=cur;i++)

printf("%s",twospace);

printf("%s\n","else");

clist.push_back(cur+'b');

recs(1+cur,n,clist);

clist.pop_back();

return;

}

如何快速建站,有沒有好的辦法

1.降低 建設費用。雲速成美站屬於阿里雲官方自營產品,便宜,沒有任何隱藏收費專案。3.使用阿里雲專用主機,穩定,開啟速度快。安全性高,可有效抵禦各種網路攻擊。4.無論是個人 企業官網,電商 等各種型別的 均可使用雲速成美站建設。5.雲速成美站擁有一千多套 模板,可隨意更換,內建有各個行業的模板,無論...

3 1 快速排序的單邊迴圈 遞迴

1.基準元素pivot mark 指標 mark指標代表的是小於基準元素的區域邊界 2.遍歷到的元素大於基準元素,繼續遍歷 3.遍歷到的元素小於基準元素,mark指標向右移動一位 意味著多了一位比基準元素小的元素,所以pivot的區域邊界增大了 最新遍歷到的元素和mark位置的元素交換位置,因為該元...

初學者的C程式設計 用三種迴圈寫出1 10的所有素數

do while迴圈 for 迴圈語句 1 2 無輸出 for 迴圈語句 2 2 輸出 while 語句 include intmain void else if j i 1 2 j while j 1 i 1 2 i while i 101 printf sum d n sum 2 printf ...