遞迴實現排列

2021-08-21 08:33:59 字數 1176 閱讀 2644

時間限制: 1 sec  記憶體限制: 128 mb

提交: 43  解決: 21

[提交] [狀態] [討論版] [命題人:admin]

題目描述

從 1~n 這 n 個整數中隨機選出 m 個,輸出所有可能的選擇方案。n>0,  0<=m<=n,  n+(n-m)<=25。 

輸入乙個整數n。

輸出按照從小到大的順序輸出所有方案,每行1個。

首先,同一行內的數公升序排列,相鄰兩個數用乙個空格隔開。其次,對於兩個不同的行,對應下標的數一一比較,字典序較小的排在前面(例如1 3 9 12排在1 3 10 11前面)。

樣例輸入

5 3
樣例輸出

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

2 3 4

2 3 5

2 4 5

3 4 5

[提交][狀態]

**

#include using namespace std;

typedef long long ll;

const int maxx=1e6+100;

const int inf=1e9;

const int mod=1e8;

int a[20],n,m;

void fun(int k,int x)

printf("%d\n",a[n]);

return ;

}for(int i=1; i<=n; i++)

}}int main()

可以直接用stl裡的函式

#include using namespace std;

typedef long long ll;

const int maxx=1e6+100;

const int inf=1e9;

const int mod=1e8;

int a[10];

int main()

doprintf("%d\n",a[n-1]);

}while(next_permutation(a,a+n));

return 0;

}

遞迴實現全排列

生成全排列的最簡單的遞迴方法的思想 1.可以把幾個數字分成前半部和最後一位。對於0123這四個數來說,最後一位 紅色字型 所出現的情況只有以下四類 先不管前三個數的排列組合情況 3 2 1 0這樣我們就把四個數字的排列問題,變成了3個 對於上述的每一行來說 2.終結條件是1個數字的排列就是其本身。直...

遞迴實現全排列

1 如果運算力,和理亂麻的水平不夠。盡量不要復用本地變數 比如c用來計數,不計數後 又用來做其它比如作為步長 除非你確認不會出現問題。2 盡量讓每個邏輯單元 函式內可以有多個邏輯單元 盡量小,邏輯盡量要清晰 3 語言組織能力有限,就說這些了。未整理,抱歉了 include stdafx.h incl...

全排列遞迴實現

一 遞迴版本 1 演算法簡述 簡單地說 就是第乙個數分別以後面的數進行交換 e g e a b c 則 prem e a.perm b,c b.perm a,c c.perm a,b 然後a.perm b,c ab.perm c ac.perm b abc acb.依次遞迴進 好了,知道演算法之後就...