简单dfs--回溯
题目:输入n,讨论能组成n位数多少种?
思路:采用dfs,原理递归
void dfs(int u)
{
if(u == n)
{
for(int i = 0; i < n; i++)cout << path[i] << " ";//每次输出一层
cout << endl;
return;
}
for(int i = 1; i <= n; i++)
{
if(!st[i])
{
path[u] = i;
st[i] = !st[i];
dfs(u + 1);
st[i] = !st[i];//回溯状态
}
}
}