博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全排列 DFS
阅读量:5066 次
发布时间:2019-06-12

本文共 715 字,大约阅读时间需要 2 分钟。

#include <iostream>

#include <cstring>
using namespace std;
char chars[] = {'a', 'b', 'c'};
char result[3];
int flag[3] ; // 用于标记是否使用过
int len;
// 注意,为了打印,这个函数需要接受一个结果数组,来记录每次递归把那个字符放进去了
void show(int index)
{
int i;
for(i = 0; i < len; i ++)
cout << result[i] << " ";
cout << endl;
}
void DFS(int index)
{
int i;
if(index == len)
show(len); // 找到结果,打印
for(i = 0; i < len; i ++)
if(!flag[i]) // 没有使用过
{
flag[i] = 1; // 标记为已经使用过
result[index] = chars[i]; // 将这次找的结果放进去
DFS(index + 1); // 找下一位
flag[i] = 0; // 回溯
}
// 当函数从for循环中出来的时候,证明当前这一位所有的可能性都找完了,那么会回到上一位的递归
}

int main()

{
memset(flag, 0, sizeof(flag));
len = sizeof(chars) / sizeof(char);
DFS(0);
return 0;
}

转载于:https://www.cnblogs.com/ghostTao/p/4018805.html

你可能感兴趣的文章
Python爬虫框架Scrapy安装使用步骤
查看>>
Anaconda 下libsvm的安装
查看>>
列表生成式
查看>>
SSM整合项目中使用百度Ueditor遇到的问题。
查看>>
复制文件
查看>>
作业调度模拟程序
查看>>
C++ inline
查看>>
SpringMVC中JSP取不到ModelAndView的数据原因
查看>>
cenos 安装 phpredis 扩展
查看>>
Yii2 的 redis 应用
查看>>
sqlplus登陆
查看>>
[翻译svg教程]svg中的circle元素
查看>>
HDU 1201 Fibonacci Again
查看>>
ASP.NET MVC视图和控制器之间的传值总结(一)
查看>>
敏捷与 DevOps:是敌是友?
查看>>
bzoj1588营业额统计
查看>>
概率与数学期望
查看>>
MySQL 5.1完全卸载
查看>>
优先队列:左式堆
查看>>
我的学习之路_第十六章_xml
查看>>