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...