有关用C++求一个数列的最大子序列和,运行始终存在问题,实在找不到问题所在,求助各位

#include<iostream>#include<vector>usingnamespacestd;intmax(inta,intb,intc){if(a>=b){i... #include <iostream>

#include <vector>
usingnamespacestd;
int max(int a,int b,int c){
if (a>=b) {
if (a>=c)
return a;
else
if (b>=c)
return b;
else
return c;
}
else
if (b>=c)
return b;
else
return c;
}
int maxSumRec(constvector<int> & a,longint left,longint right){
if (left==right)
return a[left];

int center=(left+right)/2;
int maxLeftSum=maxSumRec(a, left, center);
int maxRightSum=maxSumRec(a, center+1, right);

int maxLeftBorderSum=a[center],leftBorderSum=0;
for (int i=center; i>=left; i--) {
leftBorderSum+=a[i];
if (leftBorderSum>maxLeftSum) {
maxLeftBorderSum=leftBorderSum;
}
}

int maxRightBorderSum=a[center+1],rightBorderSum=0;
for (int j=center+1; j<=right; j++) {
rightBorderSum+=a[j];
if (rightBorderSum>maxRightBorderSum) {
maxRightBorderSum=rightBorderSum;
}
}

int maxMiddleSum=maxLeftBorderSum+maxRightBorderSum;

returnmax(maxLeftSum, maxRightSum, maxMiddleSum);
}
int main(){
vector<int> a;
char next_char;
int next_num;
cout<<"Please enter a list:\n";
cin.get(next_char);
while (next_char!='\n') {
if (!(isdigit(next_char)||next_char=='-')) {
next_char=cin.get();
continue;
}
cin.putback(next_char);
cin>>next_num;
a.push_back(next_num);
next_char=cin.get();
}
cout<<"You entered:\n";
for (int k=0; k<a.size(); k++) {
cout<<a[k]<<" ";
}
cout<<endl;

longint size=a.size();
cout<<"The max sonsum is:\n";
cout<<maxSumRec(a, 0, size-1);

return0;
}
展开
 我来答
jinwenl
2012-12-22
知道答主
回答量:33
采纳率:100%
帮助的人:5万
展开全部
int maxSub(const vector<int> &a){
int max = 0;
int sum = 0;
for(int i=0; i<a.size(); i++){
sum += a[i];
if(sum > max){
max = sum;
}
else if (sum < 0){
sum = 0;
}
}
return max;
}

把vector直接丢到这个function里面就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
he2l0
2012-12-21 · TA获得超过156个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:114万
展开全部
leftBorderSum>maxLeftSum 改为 leftBorderSum>maxLeftBorderSum
追问
谢谢,昨天发完问题再看一遍就发现了,打到问题补充里面竟然百度不显示,我那编译系统会根据已打的几个字母来自动从前面代码找寻有相同顺序字母的变量或函数等,昨天那里岩画选错了。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式