您的位置:首页 > 其它

分支策略。。。最大连续子数组和

2015-10-29 20:45 375 查看
//分支策略:

#include<iostream>

using namespace std;

void maxsubarray(int *s, int low, int mid, int high)

{

int left_sum = 0;

int right_sum = 0;

int sum = 0;

int max_left = 0;

int max_right = 0;

int i, j;

for (i = mid; i > low; i--)

{

sum += s[i];

if (sum > left_sum)

{

left_sum=sum;

max_left = i;

}

}

cout << max_left << " ";

sum = 0;

for (j = mid + 1; j < high; j++)

{

sum += s[i];

if (sum>right_sum)

{

right_sum = sum;

max_right = j;

}

}cout << max_right << " ";

cout << left_sum + right_sum << " ";

}

//测试函数:

int main()

{

int s[] = { 1, -2, 3, 10, -4, 7, 2, -5 };

int low = 1;

int high = sizeof(s) / sizeof(s[0]);

int mid = (low + high) / 2;

maxsubarray(s, 0, mid+1, high);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: