algorithm - 动态规划

标签 algorithm visual-c++ dynamic-programming

我的任务是通过强力算法对二维数组进行所有可能的组合,然后通过其成本从所有组合中找到最佳组合。

例如,如果数组的大小为 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/

相关文章:

用于匹配字典中单词的 JavaScript 算法

c++ - 难以理解某个功能的元素如何工作

c++ - 即使包含头文件,程序也会出现 LNK2019 错误

c++ - 我如何知道 k-server 动态解决方案的最佳路径位于数组 cost[ i ][ j ][ k ][ t ] 中的什么位置?

arrays - 从二维数组中删除相互引用

algorithm - 使用分治法的整数乘法算法?

algorithm - 查找文档中每个单词的出现次数?

C++,vs 2010 中的模糊继承错误

python - python中字典的效率 :

c++ - 求最小值