#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
//m个数的全排列
void AllRange(vector<int>& nums, vector<vector<int>>& sub, int k, int m) {
if (k == m) {
sub.push_back(nums);
}
else {
int i = k;
for (; i < m; i++) {
swap(nums[i], nums[k]);
AllRange(nums, sub, k + 1, m);
swap(nums[k], nums[i]);
}
}
}
// 取n个数出来
vector<int> s;
void dfs(vector<int>& a, int n, int m, int index, int nowk)
{
if (nowk == m) {//当我挑选的数已经够得时候,就把它输出。
for (int i = 0; i < m; i++) {
cout << s[i] << ' ';
}
cout << endl;
return;
}
if (index < n) {
s.push_back(a[index]);
dfs(a, n, m, index + 1, nowk + 1);
s.pop_back();
dfs(a, n, m, index + 1, nowk);
}
}
int main() {
vector<int> nums;
int n;
int a;
string s;
cin >> s;
n = s.back() - '0';//n
for (int i = 0; i < s.size() - 2;i++) {
if (i % 2) {
nums.push_back(s[i] - '0');
}
}
dfs(nums, nums.size(), n, 0, 0);
return 0;
}
m个数的全排列、// n个数取m个数出来
最新推荐文章于 2021-11-15 22:40:36 发布