【发布时间】:2018-03-27 15:59:43
【问题描述】:
使用 c/c++ 创建和存储循环的最佳方法是什么?
我有结构:
struct CYCLE {
vector<Arc> route;
float COST;
}
struct Arc {
int i, j;
Arc () {};
Arc (const Arc& obj): i(obj.i), j(obj.j) {};
Arc(int _i, int _j) : i(_i), j(_j) {}
};
为了存储已经创建的循环,我考虑过使用:
vector<CYCLE> ConjCycles;
对于创建的每个循环,我需要验证该循环是否尚未添加到 ConjCycles。 周期:1-2-2-1;与循环相同:2-2-1-2。 我怎样才能检测到像这样的周期是一样的? 我考虑过使用地图来控制这一点。 但是,我不知道如何给循环设置一个key,让上面描述的两个循环有相同的key。
【问题讨论】:
-
您能描述一下您所说的cycle是什么意思吗,它与dictionary有什么关系?
-
这里的循环是车辆访问的顶点序列。一个循环必须在同一个顶点开始和结束,但一个顶点可以在一个循环中多次访问。
-
那么比如1-2-3-4-1和1-3-2-4-1是同一个循环吗?如果是这样,您实际上是在尝试找到 2 个周期之间的“差异”,对吧?
-
它们不一样。为了相同,循环必须具有相同的弧。
-
1-2-3-4-1 与 3-4-1-2-3 周期相同。