我的任务是通过蛮力算法使一个二维阵列的所有可能组合,然后通过其成本从所有组合中找到最佳组合。
例如,如果数组的大小为4x 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
…
等等,所有这些组合。记住,上面提到的组合存储在2d数组中,在没有数字的地方插入“-”。例如:
1 - -
4 - -
7 - -
10 - -
但由于它是一个二维数组,因此不能在其中存储“-”,因此只能像它一样显示。现在,每个组合都会有随机产生的成本。和暴力一样,我首先找到所有的组合,然后选择最佳组合。它花了很多时间,例如如果我的数组是10 x 5。
然后我要做5^10个组合,这是一个巨大的数量,而且耗时我真的希望有人能帮助我通过动态编程来替代它该阵列可以是大小n×m,其中m可以是2或3最大,n可以是最大1000。提前谢谢。
最佳答案
1---/-6/-9/-12有效吗?我认为您可能会问的问题是,通过这个矩阵的最便宜路径是什么,这是一个标准的动态编程问题,请参见http://en.wikipedia.org/wiki/Dynamic_programming#Checkerboard。
否则,如果问题的意思是简单的max sum,那么只需在每行中执行max,这应该很清楚,因为每行只能有一个元素。
关于algorithm - 动态编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10388938/