【发布时间】:2012-04-09 08:51:56
【问题描述】:
我在理解动态编程方面遇到了困难,所以我决定解决一些问题。我知道基本的动态算法,如最长公共子序列、背包问题,但我知道它们是因为我读过它们,但我自己无法想出一些东西:-(
例如,我们有自然数的子序列。我们可以用加号或减号取的每个数字。最后我们取这个总和的绝对值。对于每个子序列,找到可能的最低结果。
in1: 10 3 5 4; 输出1:2
in2: 4 11 5 5 5; 输出2:0
in3: 10 50 60 65 90 100; 输出3:5
第 3 次的解释:5 = |10+50+60+65-90-100|
更糟糕的是我的朋友告诉我这是简单的背包问题,但我在这里看不到任何背包。动态编程是不是很困难,还是只有我有大问题?
【问题讨论】:
标签: algorithm dynamic-programming knapsack-problem partition-problem