免责声明:这不是一个班级项目,更多与工作有关。我尝试在线查找示例,但通常只是横穿树。我在C#中编码
大家好,
我正在尝试使用DFS来计算最大可能的数量和组合,该组合将等于其他条件给出的数字。
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吗?
答案 0 :(得分:1)
DFS和BFS适用于您目前没有的树。 IMO,在这种情况下创建一个具有所有可能组合的树不是正确的方法(但当然你可以这样做)。如果您的集很小,您可以尝试枚举所有解决方案而无需创建树并使用DFS或BFS(如@ Dennis.Verweij所建议的那样)。
我认为您的问题是Knapsack problem的变体,遗憾的是NP-Complete
否则请查看Integer Programming。这是一个难以解决的问题,但您可以找到一些相关的算法(实际上可能在内部使用DFS)来帮助您解决问题。