【发布时间】:2010-11-11 05:31:53
【问题描述】:
我正在尝试生成具有特定属性的一组对象的所有可能组合。问题是这些对象只能以特定方式组合,并且当您将对象组合作为一个整体“验证”时,它必须满足特定条件。
对象数据存储在 SQL Server 数据库中(我可以完全控制它,因此如果数据需要以不同的方式排列,它可以更改)
我正在处理的对象的简化版本是
class Item {
public string Start {get;set;}
public string End {get;set;}
}
如果我有这些对象的列表,例如:
- 项目{开始 = “A”,结束 = “B”}
- 项目{开始 = “B”,结束 = “C”}
- 项目{开始 = “B”,结束 = “A”}
这组项目的结果输出将是:
A -> B
B -> C
B -> A
A -> B -> C
例如
第 1 项可以与第 2 项组合产生 A -> B -> C。
但是第 2 项不能与第 3 项合并,因为第 2 项的结束值与第 3 项的开始值不匹配。
还有一些“整体”规则,其中 Start 和 Ends 的整体组合不能导致项目进行:
A -> B -> A
(第 1 项和第 3 项)。
最多可以将这些项目中的 5 个连接在一起。
是否有任何通用的方法或算法可以达到相同的结果?
任何帮助(甚至是指针)都将不胜感激。
【问题讨论】:
-
谷歌搜索“有向图”和循环,你的手中有一个完整的世界
标签: .net algorithm conditional combinations