我的任务是通过强力算法对二维数组进行所有可能的组合,然后通过其成本从所有组合中找到最佳组合。
例如,如果数组的大小为 4 X 3,并且其内容如下:
1 2 3
4 5 6
7 8 9
10 11 12
那么可能的组合之一可以是
1
4
7
10
同样
1
4
7
11
...
1
4
7
12
...
1
4
8
10
...
1
4
8
11
...
等等,因此所有这些组合。请记住,上面提到的组合存储在一个二维数组中,并且在没有数字的地方插入了“-”。例如:
1 - -
4 - -
7 - -
10 - -
但是因为它是一个二维数组,你不能在其中存储'-',所以它只会像它一样显示。现在,每个组合都会有一个随机生成的成本。就像在蛮力中一样,首先我找到所有组合,然后选择它的最佳组合。这花了很多时间,例如,如果我的数组是 10 X 5。
然后我必须进行 5^10 次组合,这是一个巨大的数量,而且非常耗时。我实际上希望有人帮助我通过动态编程来替代它。该数组的大小可以是 n x m,其中 m 最多可以是 2 或 3,n 最多可以是 1000。提前致谢。
最佳答案
1 - -/- - 6/- - 9/- - 12 有效吗?我认为您可能会问的问题是通过此矩阵的最便宜路径是什么,这是一个标准的动态规划问题,请参阅 http://en.wikipedia.org/wiki/Dynamic_programming#Checkerboard .
否则,如果问题只是简单的最大和,那么只需在每一行中做 max,这应该很清楚,因为每行只能有一个元素。
关于algorithm - 动态规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388938/