给定一个长度为n的数组,从中任意选择m个数,注意每个数可以选择多次,而且保证输入的n个元素完全不同,比如1 2 3 和 3 2 1 算是两种情况,按字典序输出所有的情况。
#include<bits/stdc++.h>
using namespace std;
vector<int>l;
vector<int>a;
vector<int>b(8088);
int n, t;
void dfs(int id){
if(id==t){
for(int i=0; i<a.size(); ++i) cout<<a[i]<<' ';
cout<<'\n'; return;
}
for(int i=0; i<n; ++i){
if(b[l[i]]==0){
a.push_back(l[i]); b[l[i]]=1;
dfs(id+1);
b[l[i]]=0; a.pop_back();
}
}
}
int main(){
cin>>n>>t;
for(int i=0; i<n; ++i) {int x; cin>>x; l.push_back(x);}
stable_sort(l.begin(), l.end());
dfs(0);
}