任何对使用 Matlab 解决谜题感兴趣的人都可能会喜欢这个简单的代码。 它源于需要解决由澳大利亚的一位寻宝者提出的网格难题。 (查看寻宝网站上的 GC2YWE1 Minimax 了解更多详细信息,或者如果您不知道什么是寻宝:-) 该谜题要求您找出从 10 x 10 数字网格中选取的元素总和的最大值和最小值。 规则是每个元素都必须从唯一的行和列中选择。 经过一番摸索,我决定这是一个计算上不可约的问题。 我不确定我在这个假设中是否正确,但无论如何都在此基础上进行。 要解决它,您需要计算所有 10 个! (3,638,800) 可能的总和并找到极限。 这个想法让我印象深刻,需要的是网格轨迹的计算。 Matlab 擅长使用“跟踪”功能。 方阵的对角线之和自动选取具有唯一行和列的元素,因此符合寻宝规则。 所需要的只是生成所有可能的 10! 通过切换列(或行)从原始网格制成的矩阵,并计算它们的轨迹
2021-09-17 17:51:17
2KB
matlab
1