動態規劃 求陣列最大的子陣列連續和

2021-06-19 04:25:00 字數 761 閱讀 9285

rt

**如下

//求子陣列的最大和

//利用的是dp的思想,依次遍歷陣列中的每個元素,把他們相加,如果加起來小於0,則

//把當前元素之和清為0,否則則和最大和比較,更新最大和,最後得到必是子陣列的最大和

//例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,因此輸出為該子陣列的和18。

#include#includebool maxsubarray(int data, int size,int &max)

int sum = 0;

int begin=0;

int end=0;

max=-(1<<31);

for(int i=0;imax)

else if(sum<0)

}printf("begin=%d end=%d\n",begin,end);

return true;

}int main()

; int max;

if( maxsubarray(data,8,max))

printf("%d\n",max);

int data2=;

if( maxsubarray(data2,8,max) )

printf("%d\n",max);

getchar();

system("pause");

return 0;

}

動態規劃 連續子陣列的最大和

使用動態規劃 f i 以array i 為末尾元素的子陣列的和的最大值,子陣列的元素的相對位置不變 f i max f i 1 array i array i res 所有子陣列的和的最大值 res max res,f i 如陣列 6,3,2,7,15,1,2,2 初始狀態 f 0 6 res 6 ...

動態規劃 連續子陣列的最大和

題目描述 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個...

求陣列中連續子陣列的最大和

思路 計算出任意i到j之間連續子陣列的和再比較必然能得到最大值,但時間複雜度為o n 2 我們希望能找出線性時間的演算法。我們注意到,假如陣列中全為正數,那麼最大和必然為全部數相加 如果陣列中有負數,並且如果加上某個負數,子陣列的和小於0,則最大和子陣列必然不包含這個負數。基於此,給出以下 incl...