1. 程式人生 > 其它 >演算法提高 (一)

演算法提高 (一)

一、最大連續子段和 /和最大子序列

資源限制   時間限制:1.0s 記憶體限制:256.0MB 問題描述   給出一個長為n的數列,a1,a2,……,an,求和最大的連續子序列,即找到一對(i,j),i<=j,使ai+ai+1+……+aj的和最大,輸出這個和 輸入格式   第一行為正整數n
  第二行n個用空格分開的整數
  表示a1,a2,……,an 輸出格式   一個整數,表示最大連續子序列的和 樣例輸入   3
  -1 -2 -3 樣例輸出   -1 資料規模和約定   1<=n<=10^5,-10^5<=ai<=10^5 C++實現(動態規劃)
#include<iostream>
#include
<cmath> #include<string> #include<vector> #include<math.h> #include<set> #include<map> #include<algorithm> using namespace std; int Maximum_subsegment_sum(int n,int *a) { int i, sum=-999999,temp=-9999999; for (i = 0; i < n; i++) { if (temp > 0
) { temp += a[i]; } else { temp = a[i]; } if (temp > sum) { sum = temp; } } return sum; } int main() { int i, * a, n; cin >> n; a = new int[n]; for (i = 0; i < n; i++) { cin
>> a[i]; } cout << Maximum_subsegment_sum(n, a) << endl;
   delete [] a;
return 0; }

待補……

不忘初心,方得始終。