让我们说max_sequence(Array A):是Kadane算法的解决方案。
你有一个数组:5,-3,-4,8,-1,12,-6,+ 4,+ 4,-14,+ 2,+ 8
并将此数组缩短为正序和负序的条纹:
所以现在数组是:+ 5,-7 + 8,-1,+ 12,-6,+ 8,-14 + 10
两个数组返回的最大序列相同。
你能用数学方法证明存在/不存在一个整数序列(包含至少一个正整数)从函数max_sequence返回不同的输出吗?
答案 0 :(得分:1)
如果max_sequence包含正值的连续子序列中的一个正值,则它包含所有连续的正值,否则它不会是最大值。 [Reductio ad absurdum]
如果max_sequence包含负值的连续子序列中的一个负值,那么它包含所有连续的负值和两个封闭的正值以及它们的所有正后继或前任,否则它不会是最大值。 [Reductio ad absurdum]
因此,游程编码版本产生的结果与非游程编码版本相同。