输出所有组合的情况: #include <iostream> #include <vector> #include <iterator> using namespace std; vector<int> a; vector<int> o; int n; int m; void comb(int c, int l){ if(l == 0){ copy(o.begin(),o.end(),ostream_iterator<int>(cout," ")); cout << endl; return; } for(int i = c; i < n; i++){ o[m-l] = a[i]; comb(i+1,l-1); } } int main(){ cin >> n; for(int i = 0; i < n; i++){ int t; cin >> t; a.push_back(t); } cin >> m; o.resize(m); comb(0,m); return 0; }