9 条题解
-
0
另类思路,看大家写的挺多的
#include<iostream> #include<set> #include<vector> using namespace std; set<int> s; vector<int> vec(11);//存排序好的输入的所有的数 vector<int> vec1(11);//存选择的数 int ss; int n, r; int b[11];//标记选择过的对应vec的位置的数 void dfs(int k) { if(k == r + 1) { for(int i = 0; i < k - 2; i++) { cout << vec1[i] << " "; } cout << vec1[k - 2] << endl; } for(int i = k - 1; i < n; i++) { if(b[i] == 0 && (k == 1 || vec1[k - 2] < vec[i])) { b[i] = 1; vec1[k - 1] = vec[i]; dfs(k + 1); b[i] = 0; } } } int main() { cin >> n >> r; //这里用到set,进行从小到大排序 for(int i = 0; i < n; i++) { cin >> ss; s.insert(ss); } //用assign将set中的数存到vec中去,主要是vec好取下标。 vec.assign(s.begin(), s.end()); dfs(1); }
信息
- ID
- 83
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 607
- 已通过
- 214
- 上传者