正在检测循环对
Detecting cyclic pairs
假设一个std::set< std::pair<char, char> >
,有人能提出一种算法或方法来检查是否存在循环对吗?
例如
std::set< std::pair<char, char> > cyclic = { {'A', 'B'}, {'B', 'C'}, {'C', 'A'} };
std::set< std::pair<char, char> > not_cyclic = { {'A', 'B'}, {'B', 'C'}, {'C', 'C'} };
isCyclic(cyclic); // true
isCyclic(not_cyclic); // false
我不想使用任何外部库(允许使用c++库),因为函数bool isCyclic(const std::set< std::pair<char, char> >& set);
只会使用一次,而且它对#include
来说应该是多余的——一个像boost这样的大库,只用于这一个函数。。。
有什么办法解决这个问题吗?
这里有一个图,字符是它的顶点,对是集合中的边。您可以使用任何搜索(例如BFS
或DFS
)轻松检测是否存在循环。也可以看看这个问题。不要介意它处理的是无向的情况,因为算法是一样的。
相关文章:
- 下面是我为检测链接列表中的循环而制作的代码
- 如何在贝尔曼福特算法中检测负循环?
- 对于循环不循环和检测字符数组 [指针和字符数组]
- QML 检测到属性宽度的绑定循环(TextMetrics 行为很奇怪)
- 使用不带无限循环的 C++ i 检测文本文件中的更改
- C++ 比较 2 个不同列表中的值以使用 2 for 循环摆脱重复的数字。无法正确检测重复项
- 该功能检测循环链接列表的时间复杂性是什么?
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- 为什么我在图中的DFS循环检测总是返回true
- C++地图上的循环没有检测到地图末端的变化
- 需要有关如何在我的 2d directx 9 游戏中迭代嵌套循环以进行碰撞检测的帮助或建议
- 从文本文件中检测有向图中的循环
- 正在检测循环对
- 为什么此循环不检测空指针?
- 无法使用 cin.get 来检测周期来中断循环
- 使用两个语句并行化 while 循环(弗洛伊德循环检测算法)
- 设置 for 循环以循环,直到检测到空字节
- 当 COUT 不起作用时,如何检测无限循环?
- Opencv循环检测- RAM加载
- 图中循环检测算法的改进