算法小萌新和你一起学习DFS排列组合!
Deepth First Search,是图结构的一种基本操作。首先选择任意一个点作为起点,然后选择一个与起点连通且没有到达过得点,将这个点再次作为起点,再次寻找下一个与该点连通且没有到达过得点。
换一句话说,想象成一个树,选择好一个分支,不停迭代,一直迭代到叶子节点,当遍历到叶子节点时,就没有办法继续向下迭代了,然后回到上一个节点,去选择没有走过的路线。
很明显,这个算法是一个递归的过程。
好了,我们直接来看代码,首先我们先来看-排列,
void dfs(int index)
{
if (index==k+1)//=================a
{
for (int i=1;i<=k;i++)
cout<<result[i]<<" ";
cout<<endl;
return ;
}
for (int i=1;i<=n;i++)
{
if (!visited[i] )//=========b
{
result[index] = i;
visited[i] = true;//=======&