時間限制: 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.依次遞迴進 好了,知道演算法之後就...