|
1
3
真正的蛮力方法将测试每个分数组合,而不仅仅是随机选取分数。
这意味着你有10^18个可能的年级组合。这对暴力来说太多了。 :
现在,我们可以忘记一些约束,在这些新约束下工作:
理论上 使用获取所有可能的组合
但这将返回1440亿GB的矩阵(8字节*18行*10^18个选项),我敢打赌你无法存储,更不用说生成所需的时间了!
你需要限制问题的范围,因为我们可以很容易地找到一个结果(9名学生的分数)
生成而不是匹配条件 生成 令人满意的结果,而不是得到所有可能的结果,看看哪个适合!
在MATLAB中执行此操作的简单方法:
|
|
2
2
这是可以使用递归解决的问题,并且可以使用 backtracking . 我只是提供了两个基于递归的解决方案,一个相当于问题中出现的“猜测”技术,另一个是一个更智能的解决方案,它放弃了某些可能导致失败的猜测:
我建议你读一下 BFS , DFS 和 search heuristics . 虽然我将第二种解决方案称为“基于启发式”,但我不确定这是否符合启发式,而是用于修剪搜索树的某种技术。 |
|
|
3
-1
输出(1个小数级除以10):
|