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



免责声明:这不是一个类项目,更多的是与工作相关的。我尝试在网上查找示例,但通常它只是为了穿越树。我正在用 C# 编码

大家好

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

  1. 在一个班级中,总重量总和需要低于 150。
  2. 班级总身高不能超过600。
  3. 如果可能的话,A班的最大学生人数
  4. 如果身高和体重相同,将首先考虑身份证较小的人。

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?

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

我认为您的问题是背包问题的变体,不幸的是,这是NP-Complete

否则,请查看整数规划。这是一个很难解决的问题,但你可以找到一些相关的算法(可能实际使用内部DFS(来帮助你解决问题。

最新更新