您的位置:首页 > 其它

dp之一维的最大字段和算法

2013-05-17 19:33 176 查看
/********************************************************************

*一维的最大字段和算法 O(n)

*功能: 求解给定数组的最大字段和,并求出最大子段的起始位置和结束位置。

*函数: intmaxsum(int *num, int len, int &s, int &e)

*参数: num[] //原始数据从0开始存储

* len //数据长度

* s //最大子段的起始位置 注意: 1是第一个位置不是0;

* t //最大子段的结束位置

*返回值:

* sum //数组的最大字段和

*********************************************************************/

#define MIN-1000000;

int maxsum(int *num,int len, int &s, int &e)

{

int i, b = 0;

int start = 1, end = 0;

int sum = MIN;

for ( i = 1; i <= len; i++) {

if (b >= 0) {

b += num[i];

end++;

} else {

b = num[i];

start = i;

end = i;

}

if (b > sum) {

sum = b;

*s = start;

*e = end;

}

}

return sum;

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