從n個數里面選擇m個數
#include<iostream> #include<vector> using namespace std; vector<int> s; void dfs(int a[],int n,int m,int index,int nowk) { if(nowk==m){//當我挑選的數已經夠得時候,就把它輸出。 for(int i=0;i<2;i++){ cout << s[i] << ' '; } cout << endl; return ; } if(index<n){ s.push_back(a[index]); dfs(a,n,m,index+1,nowk+1); s.pop_back(); dfs(a,n,m,index+1,nowk); } } int main() { int n,m; cin >> n >> m;//n個數我要選擇m個數,選出來的數是沒有順序的 int a[n]; for(int i=0;i<n;i++){ cin >> a[i]; } dfs(a,n,m,0,0); return 0; }
這個代碼是從n個數里選擇m個數,是組合數。我舉個例子吧。假如我想從從3個數里選擇2個數,這3個數分別是{1,2,3},那么我選擇的結果就有三種,分別是{1,2},{1,3},{2,3},這個程序就能夠實現這樣的功能。

