题目链接:活动 - AcWing
#include <cstdio>
#include <vector>
using namespace std;
vector<int>path;
void backtracking(int n,vector<bool>&used)
{
if(path.size() == n)
{
for(int i = 0;i < n;i++)
if(i != n-1) printf("%d ",path[i]);
else printf("%d\n",path[i]);
return;
}
for(int i = 1;i <= n;i++)
{
if(used[i] == true) continue;
path.push_back(i);
used[i] = true;
backtracking(n,used);
used[i] = false;
path.pop_back();
}
}
int main()
{
int n;
scanf("%d",&n);
vector<bool>used(n+2,false);
backtracking(n,used);
return 0;
}