AcWing 842. 排列数字
原题链接
简单
作者:
jiashihong
,
2019-08-06 17:04:43
,
所有人可见
,
阅读 659
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
vector<vector<int>> ans;
vector<int> path;
vector<bool> mark;
void dfs(vector<int>&nums,int k)
{
if(k==nums.size())
{
ans.push_back(path);
return ;
}
for(int i=0;i<nums.size();i++)
{
if(mark[i]==false)
{
mark[i]=true;
path.push_back(nums[i]);
dfs(nums,k+1);
path.pop_back();
mark[i]=false;
}
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
while(cin>>n)
{
mark=vector<bool>(n,false);
vector<int> nums(n);
for(int i=0;i<n;i++)
{
nums[i]=i+1;
}
dfs(nums,0);
for(int i=0;i<ans.size();i++)
{
for(int j=0;j<ans[i].size();j++)
{
cout<<ans[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}