描述:1.從給定序列中找出連續最大子串行,滿足子串行的和為最大值,返回該最大值;
2.從給定序列中找出連續最大子串行,滿足子串行的積為最大值,返回該最大值;
思想:第一題首先申請乙個變數curmax表示當前子串行累計和,初始化為0,res表示當前所有子串行和的最大值,初始化為最小值int_min。從序列中依次讀取資料x,如果curmax>0,則將讀取的資料加入到當前序列,curmax=curmax+x;如果curmax<0,則拋棄之前的序列,從當前讀取資料重新開始計算新的序列的累計和,此時curmax=x;在每次更新curmax的同時也需要判斷curmax與res的大小,如果curmax>res,則更新res為curmax;
第二題思路類似,申請乙個變數curmax表示當前子串行累計積,初始化為1,res表示當前所有子串行積的最大值。不同的是新的子串行是從出現當前乘積為0的時候,另外需要注意的是,為保證得到所有子串行的乘積,需要正序和逆序兩次遍歷給定序列。
**如下:
第一題:
class solution
return res;
}};
第二題:
class solution
curmax=1;
for(int i=len-1;i>=0;i--)
return res;
}};
最大子串行和(動態規劃)
最近溫習和提公升一下演算法,發現了乙個很經典的問題 最大子串行和,看到這篇部落格,發現講的很容易理解,給大家分享一下。給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,...
和最大子串行 動態規劃
問題描述 對於乙個給定的長度為n的整數序列a,它的 子串行 的定義是 a中非空的一段連續的元素 整數 你要完成的任務是,在所有可能的子串行中,找到乙個子串行,該子串行中所有元素的和是最大的 跟其他所有子串行相比 程式要求你輸出這個最大值。輸入格式 輸入檔案的第一行包含乙個整數n,第二行包含n個整數,...
最大子串行和問題(動態規劃)
1.問題詳解 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和。例如 序列 2 11 4 13 5 2,則最大子串行和為20。序列 6 2 4 7 5 3 2 1 6 9 10 2,則最大子串行和為16。2.解決辦法 這一類題目我們通常採用動態規劃來解決,即可以通過一次遍歷完...