http://codevs.cn/problem/1294/
深度优先搜索,用递归操作,难点在于,递归的数据输出,构造一个数组存储前几次递归得到的数据。其次 在这个题中printf比cout省时间一目了然。
在dfs的函数构造过程中,cou[1]的输出原来用的cout,我想就这么一个数据不想啥,可是总是TLE,我尝试着改成printf,没想到竟然过啦~
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int df[11] = { 0 };
int cou[11] = { 0 };
int a = 0;
void dfs(int cishu)
{
for (int i=1;i<=a; i++)
{
if (df[i]==0)
{
cou[cishu] = i;
df[i] = 1;
if (cishu == 1)
{
for (int j = a; j >= 2; j--)
{
printf("%d ",cou[j]);
}
printf("%d\n",cou[1]);
df[i] = 0;
return;
}
cishu--;
dfs(cishu);
cishu++;
df[i] = 0;
}
}
}
int main()
{
cin >> a;
dfs(a);
system("pause");
return 0;
}