The maximum number of word groups is a classical problem in recursion and divide-and-conquer algorithms:
Problem: A sub-array in which the maximum value can be obtained by adding an array, which refers to any successive paragraph in the original array
Code:
#include <iostream>using namespace std;int max_mid (Int *a,int mid, Int low,int high) { int ml = a[mid]; int mr = 0; int sum = ml; for (int i = mid-1; i>=low; i--) { sum = sum+a[i]; if (SUM>ML) { ml = sum; } } sum = 0; for (int i = mid+1; i<=high; i++) { sum = sum+a[i]; &nbSp; if (SUM>MR) { mr = sum; &NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;}&NBSP;&NBSP;&NBSP;&NBSP;RETURN&NBSP;ML+MR;} Int max (Int *a,int low,int high) { if (Low == high) { return a[low]; } else { int mm; int ml; int mr; int mid = (Low+high)/2; ml = max (A,low,mid); mm = max_mid (A,mid,low,high); mr = max (A,mid+1,high); if (MM>=ML&&MM>=MR) { return mm; } if (ML>=MM&&ML>=MR) { return ml; } else { return mr; } }}int a[1000];int main () { int n; while (cin>>n) &NBSP;&NBSP;&NBSP;&NBSp { for (int i = 0; i<n; i++) { cin>>a[i]; } cout<<max (a,0,n-1) <<endl; } return 0;}
This article is from the "developer" blog, so be sure to keep this source http://tang1513.blog.51cto.com/7678175/1566341
The maximal subarray of the algorithm