3429. 全排列 - AcWing题库
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
vector<char> path;
vector<vector<char>> res;
bool check[10];
void dfs()
{
if(s.size()==path.size())
{
res.push_back(path);
return;
}
for(int i=0;i<s.size();i++)
{
if(!check[i])
{
check[i]=true;
path.push_back(s[i]);
dfs();
check[i]=false;
path.pop_back();
}
}
}
int main()
{
cin>>s;
int n=s.size();
dfs();
for(int i=0;i<res.size();i++)
{
for(int j=0;j<res[i].size();j++)
{
cout<<res[i][j];
}
cout<<' ';
}
return 0;
}
78. 子集 - 力扣(LeetCode)
#include<bits/stdc++.h>
using namespace std;
vector<int> path;
int nums[20];
vector<vector<int>> res;
int n;
void dfs(int pos)
{
res.push_back(path);
for(int i=pos;i<n;i++)
{
path.push_back(nums[i]);
dfs(i+1);
path.pop_back();
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>nums[i];
}
dfs(0);
for(int i=0;i<res.size();i++)
{
for(int j=0;j<res[i].size();j++)
{
cout<<res[i][j];
}
cout<<endl;
}
return 0;
}