按字典序生成排列的算法(深度优先搜索)
2008-04-02 21:43
363 查看
//************************************//
//按字典序生成排列的算法(深度优先搜索)//
//visted需要初始化为0,elem中存储要排 //
//列的元素,调用DFS(0,n)即可,此算法在//
//Vs2005下调试通过(数组都从0开始) //
//************************************//
#include<stdio.h>
int visited[20];
int workarr[20];
int elem[20]={0};
void DFS(int l,int n)//l为深搜的位,n为元素的个数
{
int i;
if (l == n)
{
for (i=0; i<l; i++)
printf("%d ", workarr[i]);
printf("/n");
return;
}
for (i=0; i<n; i++)
if (!visited[i])
{
visited[i] = 1;//确保不重复
workarr[l] = elem[i];
DFS(l+1,n);
visited[i] = 0;
}
}
main()
{
}
//按字典序生成排列的算法(深度优先搜索)//
//visted需要初始化为0,elem中存储要排 //
//列的元素,调用DFS(0,n)即可,此算法在//
//Vs2005下调试通过(数组都从0开始) //
//************************************//
#include<stdio.h>
int visited[20];
int workarr[20];
int elem[20]={0};
void DFS(int l,int n)//l为深搜的位,n为元素的个数
{
int i;
if (l == n)
{
for (i=0; i<l; i++)
printf("%d ", workarr[i]);
printf("/n");
return;
}
for (i=0; i<n; i++)
if (!visited[i])
{
visited[i] = 1;//确保不重复
workarr[l] = elem[i];
DFS(l+1,n);
visited[i] = 0;
}
}
main()
{
}
相关文章推荐
- 减治法在生成全排列中的应用(JAVA)--回溯、Johnson-Trotter算法、自字典序
- 减治法在生成全排列中的应用(JAVA)--回溯、Johnson-Trotter算法、自字典序
- 排列的字典序生成算法(自然解法)
- 31. Next Permutation (java 字典序生成下一个排列)
- 算法设计与分析-减治法2:生成排列的减治算法及其他算法
- 全排列的生成算法
- 字典序生成排列
- 基础算法之排列组合生成算法
- 笔试面试算法经典--全排列算法-递归&字典序实现(Java)
- 嵌套排列生成到循环排列生成的算法
- 按字典序算法全排列
- 比较某排列生成算法的递归版和非递归版的效率
- 全排列生成算法与组合数排列求法
- 排列生成算法注意事项
- 排列生成算法--序列法
- STL源码——排列生成算法(next-permutation、pre-permutation)
- 算法练习 - 字符串的全排列(字典序排列)
- 用Python以字典序生成n个数的排列
- 按照字典序生成1--n的排列
- 字典序排列的算法