修改深度首先搜索以查找总和

时间:2017-08-24 10:14:08

标签: c# depth-first-search

免责声明:这不是一个班级项目,更多与工作有关。我尝试在线查找示例,但通常只是横穿树。我在C#中编码

大家好,

我正在尝试使用DFS来计算最大可能的数量和组合,该组合将等于其他条件给出的数字。

  1. 一个班级的总重量需要低于150。
  2. 班上的总高度不能超过600.
  3. A类学生的最大学生人数
  4. 如果身高和体重相同,身份证较小者将首先考虑。
  5. ID - 重量 - 身高
    1 - 80 - 150
    2 - 30 - 100
    3 - 30 - 150
    4 - 50 - 100
    5 - 60 - 150
    6 - 40 - 100

    1级:1,2,6

    2级:3,4,5

    第3课:

    任何人都可以指出我正确的方向或在这种情况下不应该使用DFS吗?

1 个答案:

答案 0 :(得分:1)

DFS和BFS适用于您目前没有的树。 IMO,在这种情况下创建一个具有所有可能组合的树不是正确的方法(但当然你可以这样做)。如果您的集很小,您可以尝试枚举所有解决方案而无需创建树并使用DFS或BFS(如@ Dennis.Verweij所建议的那样)。

我认为您的问题是Knapsack problem的变体,遗憾的是NP-Complete

否则请查看Integer Programming。这是一个难以解决的问题,但您可以找到一些相关的算法(实际上可能在内部使用DFS)来帮助您解决问题。