作业比赛编号 : 100000608 - 《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)
#include<cstdio>
#include<set>
#include<vector>
using namespace std;
set<int> num;
vector<int> temp;
void DFS()
{
if (num.size() == 0)
{
int j;
for (j = 0; j < temp.size(); j++)
{
printf("%d", temp[j]);
if (j != temp.size() - 1)printf(" ");
}
printf("\n");
return;
}
int i;
set<int>::iterator it = num.begin();
int n;
for (i = 1; i <= num.size(); i++)
{
n = *it;
temp.push_back(n);
num.erase(it);
DFS();
temp.pop_back();
num.insert(n);
it = num.find(n);
if(i!=num.size())it++;
}
}
int main()
{
int N;
scanf("%d", &N);
int i;
for (i = 1; i <= N; i++)
{
num.insert(i);
}
DFS();
return 0;
}