使用特定的连接规则构建项目的组合

时间:2010-11-09 21:07:13

标签: .net algorithm conditional combinations

我正在尝试生成具有特定属性的一组对象的所有可能组合。问题是这些对象只能以某种方式组合,当你“整体”验证对象组合时,它必须符合某些条件。

对象数据存储在SQL Server数据库中(我完全可以控制,因此如果数据需要以不同方式排列,它可以更改)

我正在处理的对象的简化版本是

class Item { 
public string Start {get;set;}
public string End {get;set;}
}

如果我有这些对象的列表,例如:

  1. 项目{Start =“A”,End =“B”}
  2. 项目{Start =“B”,End =“C”}
  3. 项目{Start =“B”,End =“A”}
  4. 这组项目的结果输出为:

    A - >乙
     B - > ç
     B - >一个
     A - > B - > C

    e.g。
    项目1可以与项目2组合以产生A - > B - > C.
    但是第2项不能与第3项结合,因为第2项的结束值与第3项的开始值不匹配。

    还有“整体”规则,其中“开始”和“结束”的整体组合不会导致项目进入: A - > B - >一个
    (项目1与项目3)。

    最多可以将这些项目中的5个连接在一起。

    是否有任何通用的方法可以实现相同的结果?

    任何帮助(甚至是指针)都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

如果您想对数据库中的查询执行此操作,可以查看Recursive Queries Using Common Table Expressions