DFS(Depth First Search)深度优先搜索算法
基本概念:
深度优先搜索算法:一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点V的所在边都已被搜寻过或者在搜寻时节点不满足,搜索将回溯到发现节点V的那条边的起始节点。整个过程反复进行直到所有节点都被访问为止。最糟糕时算法复杂度O(!n)。
输入样例:
6 a c b d e f
输出样例:
a
c
b
d
e
f
提交:
#include <iostream> #include <string.h> using namespace std; //全排列,n个字符依次放入n个箱子中,首先检查箱子是否为空,手中还有什么字符,放进去并标记。 //放完一次恢复初始状态,当到n+1各箱子时,一次排列结束 int n; char a[6]; char re[6]; int vis[6]; void dfs(int step) { int i; if (step == n+1) {//判断边界 for (i=1; i<=n; i++) printf("%c",re[i]); printf("\n"); return ; } for (i=1;i<=n;i++) {//遍历每一种情况 if (vis[i] == 0) {//check满足 re[step] = a[i]; vis[i]=1;//标记 dfs(step+1);//继续搜索 vis[i]=0;//恢复初始状态 } } return; } int main() { int T; scanf("%d",&T); getchar(); while(T--){ memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis));//对存数据的数组分别初始化 scanf("%s",a+1); n = strlen(a+1); dfs(1);//从第一个箱子开始 } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
2019-08-06 ORA-12516:监听程序找不到服务协议堆栈要求的可用处理程序(转)
2019-08-06 Io 异常: The Network Adapter could not establish the connection(转)