9 条题解
-
0
#include <bits/stdc++.h> using namespace std; //递归函数 void function_Permutation(vector<int>& arr, vector<int>&arrs, size_t start, size_t r, vector<vector<int>>& result) { //终止条件 动态数组arrs取了r个数时 if ( arrs.size() == r ) { result.push_back(arrs);//把动态数组放在结果数组里面 return; } for ( size_t i = start; i < arr.size(); i++ ) { arrs.push_back(arr[i]); //按顺序将每一个数字固定在arrs数组中 function_Permutation(arr , arrs , i + 1 , r , result); // 递归深入处理选数字找位置(i+1)==》 start arrs.pop_back(); // 递归最深处后(代表最后一个数字有了并且存下了,那就删掉最后一个数字进入循环。 //问题出在 arrs.pop_back(arr[i]) 这一行代码。std::vector::pop_back 是一个成员函数, //它的作用是移除向量的最后一个元素,但它不接受任何参数。然而,你在调用时错误地传入了一个参数 arr[i]。 } } int main() { int n,r; cin >> n >> r; //接收数组 vector<int> arr(n); for ( int i = 0; i < n; i++ ) { cin >> arr[i]; } //升序 sort(arr.begin() , arr.end()); //创建储存数组result 动态数组arrs vector<vector<int>> result; vector<int> arrs; //调用递归函数 function_Permutation(arr, arrs , 0 , r , result); //输出结果函数 for ( const auto& nums : result ) { for ( int num : nums ) { cout << num << " "; } cout << endl; } return 0; }
信息
- ID
- 83
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 610
- 已通过
- 214
- 上传者