最近研究最大陣列,稍微總結一下,以後繼續補充:
find the contiguous subarray within an array (containing at least one number) which has the largest sum.
for example, given the array[−2,1,−3,4,−1,2,1,−5,4]
,
the contiguous subarray[4,−1,2,1]
has the largest sum =6
.
分析:利用掃瞄演算法,從陣列最左端開始掃瞄,一直到最右端,並記下所碰到的最大總和子向量。最大總和的初值為0.
對於前m個元素,最大總和子陣列要麼在前m-1個元素中,要麼是其結束位置為m。
每日一道理
春蠶死去了,但留下了華貴絲綢;蝴蝶死去了,但留下了漂亮的衣裳;畫眉飛去了,但留下了美妙的歌聲;花朵凋謝了,但留下了縷縷幽香;蠟燭燃盡了,但留下一片光明;雷雨過去了,但留下了七彩霓虹。
還需注意的一種情況是若所有的元素都為負值,則問題轉化為求陣列中的最大數。
**如下:
int max(int l,int r)
return (l>r)?l:r;
int maxsubarray(int a, int n)
int tempmax=0,maxending=0,negative=a[0];
for(int i=0;imaxending = max(maxending+a[i],0);
tempmax = max(tempmax,maxending);
if(a[i]>negative)negative=a[i];
if(negative<0)return negative;
else return tempmax;
最大子向量和(連續子陣列的最大和)
題目1372 最大子向量和 連續子陣列的最大和 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 2132 解決 556 題目描述 hz 偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天 jobdu 測試組開完會後 他又發話了 在古老的一維模式識別中 常常需要計算連續子向量的最大和 當...
最大和連續子陣列
問題描述 乙個數值型陣列,其子陣列有多個,求其子陣列中最大的和值。所謂和值,是指數組所有元素相加的和。解法 1 掃瞄法,維護max變數,儲存最大和,其初始值為data 0 假設最大和子陣列的第一位下標為i,i從0到n 1,對於每個i值,從data i 開始,進行累加,每加乙個數,與max變數比較一次...
連續子陣列最大和
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...