这道题网上的二维DP标准算法是完全错误的,花了我好几天去思考,后来通过一点点模拟总算找到了错误,且听我慢慢道来,至于错误程序网上有很多,可以去搜索我就不给链接了。
还有,UVA323这道题加强过数据,这才能验证是否是正确的程序。
网上广泛流传的二维DP思路是已经已经选择多少人->此次选择哪个人->差值之和,因为不能重复,所以加入一个判断的过程,
9 6 6 2 16 10 4 9 19 8 17 12 4 7 10 2 2 14 5 18 0 0
这组数据的答案是
Jury #1
Best jury has value 54 for prosecution and value 54 for defence:
1 2 3 4 6 9
但是错误程序的答案是
Jury #1
Best jury has value 52 for prosecution and value 52 for defence:
1 3 4 5 6 8
warning:我后面讲的数是指一组数据的前面一个数减去后面一个数,加起来指的是这些数加起来,而和指的是一组数据中前一个加后一个。(这样是不是好难理解)这样说比较方便。如这组数据:数分别为{4, 6, -5, 11, 5, -3, 8, -12, -13};加起来指的是4+6或者4+-5这种。和分别是{8,26,13,27,29,11,12,16,23}。务必要看懂这句话。
通过正确的答案和程序,运行得到dp[5][-4+6*20] = 100其中6×20是相当于零点,而-4代表的是第一组数据,9和6,下一个只要是4就可以得出正确的结论,即108。
这个数据是给错误的程序做准备的,因为它不是一个一个枚举,它是通过一个一个去试,然后通过上一个状态寻找该状态该点的最大值。
在