需要盖要描述算法的思想,并且在关键的地方给出简明的注释,使用c语言。
3条回答 默认 最新
- 北座猎户 2022-07-31 08:30关注
正确的解法应该有两种:
1.拓扑
2.dfs(深搜)
回路的定义这里就不必再说了(毕竟我蒟QwQ)
第一种方法是利用了拓扑排序的思想,在拓扑排序的过程中,我们往往需要保证图中没有回路,所以可以利用这个算法的边界:
我们就正常进行拓扑序遍历:1.找到入度为零的点输出;2.删除与这些点相关的出度;3.重复上述直到图中不存在入度为零的点为止
结束的时候判断一下,如果所有点都被输出了一遍,说明是没有回路的(就和我们平时走拓扑序一样,既然能成功,图就是没有回路的),反之则反(当然如果找不到入度为零的点就直接操作三)
第二种方法相对简单一些,我们循环所有节点作为源点,从源点开始遍历,就写一个深搜的板子,再加一个判断:如果深搜的过程中遇到了源点就说明有回路(注意,这里和楼上的区别在于:我判断的是从某个点出发能否回到这个节点,而楼上判断的是某个节点被碰到过一次后是否会被再碰到一次,可以画几个图加深理解)
(但是很显然搜索这个东西不剪纸和记忆化效率是比较……嗯……可能还比较玄学,所以个人喜欢用拓扑)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
- ¥50 comsol温度场仿真无法模拟微米级激光光斑
- ¥15 上传图片时提交的存储类型
- ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
- ¥15 VB.NET如何绘制倾斜的椭圆
- ¥15 arbotix没有/cmd_vel话题
- ¥20 找能定制Python脚本的
- ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
- ¥15 用C语言怎么判断字符串的输入是否符合设定?
- ¥15 通信专业本科生论文选这两个哪个方向好研究呀