問題:
有一串 int 數字串,存在陣列a中。要求找到起始位置start和終止位置end,使得從start位置到end位置的所有數字之和最大,返回這個最大值max。
演算法思路:
設 suffer 為以a[x] 終止且包含a[x] 的最大序列的和,有:
if(suffer+a[x+1]>max) suffer+=a[x+1],max=suffer;
else if(suffer+a[x+1]) suffer+=a[x+1];
else suffer=0;
保證max是所有suffer中最大的乙個。其演算法的時間複雜度為o(n),**實現如下:
public int getmaxsub(int a)
else if(a[i]+suffer>0)
else suffer=0;
}return suffer;
}
最大連續子串行求和
time limit 1 s memory limit 32 mb submitted 120 accepted 67 64bit integer format lld submit 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個...
最大連續子串行求和
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...
最大連續子串行求和問題
最大連續子串行求和問題如下 給定乙個序列 a1,a2,a3.an,求i,j 1 i j n 使得ai aj最大,輸出這個最大值的和。例 輸入 2 11 4 13 5 2 顯而易見11 4 13 20為最大值,因此此時的最大值為20。採用暴力法複雜度為o 採用動態規劃的方法進行編寫 複雜度會降低到o ...