5 条题解
-
0
#include<iostream> #include<algorithm> #include<cmath> #include<cstdio> #include<climits> #include<vector> using namespace std; int n,r; vector<int> res; void dfs(int startIndex,int countNum,int nums[],int used[]){ // 处理递归终止的条件 if(countNum>r){ for(auto temp:res) cout<<temp<<" "; cout<<endl; return; } // 处理递归的单层逻辑 for(int i=startIndex;i<n;i++){ if(used[i]==1) continue; used[i]=1; res.push_back(nums[i]); dfs(i+1,countNum+1,nums,used); used[i]=0; res.pop_back(); } } int main(){ cin>>n>>r; int nums[n]; int used[n]={0}; for(int i=0;i<n;i++) scanf("%d",&nums[i]); sort(nums,nums+n); dfs(0,1,nums,used);//从第一个数开始选 return 0; }
信息
- ID
- 83
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 278
- 已通过
- 104
- 上传者