您的位置:首页 > 其它

关于DFS算法小例子

2017-03-04 16:17 148 查看
写一个DFS算法关于排列与组合的小例子便于理解

#include <iostream>

using namespace std;

int num[3] = {0};

void dfs(int index)
{
if (index == 3)
{
for (int i = 0; i < 3; i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
return ;
}

for (int i = 1; i <= 3; i++)
{
num[index] = i;
dfs(index+1);
}
}

int main()
{
int k = 0;

dfs(0);

return 0;
}


输出

1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3


另一个小例子,与第一个差不多

#include <iostream>

using namespace std;

int num[3] = { 0 };
bool visit[4] = { false };

void dfs(int index)
{
if (index == 3)
{
for (int i = 0; i < 3; i++)
{
cout << num[i] << " ";
}
cout << endl;
return;
}

for (int i = 1; i <= 3; i++)
{
if (!visit[i])
{
visit[i] = true;
num[index] = i;
dfs(index + 1);
visit[i] = false;
}

}
}

int main()
{
int k = 0;

dfs(0);

return 0;
}


输出

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dfs 算法