免责声明:这不是一个类项目,更多的是与工作相关的。我尝试在网上查找示例,但通常它只是为了穿越树。我正在用 C# 编码
大家好
我正在尝试使用 DFS 来计算最大可能的数字和组合,该组合将等于在其他一些条件下给出的数字。
- 在一个班级中,总重量总和需要低于 150。
- 班级总身高不能超过600。
- 如果可能的话,A班的最大学生人数
- 如果身高和体重相同,将首先考虑身份证较小的人。
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(来帮助你解决问题。