关于输入一个数列,求和最大的连续子序列,输出最大的和的问题

如果不输入n,直接输入这个整数序列,这段代码怎么修改呢?求教如果不输入n,,直接输入这个整数序列,这段代码怎么该呢?求教,谢谢。#include<stdio.h>intm... 如果不输入n,直接输入这个整数序列,这段代码怎么修改呢?求教
如果不输入n,,直接输入这个整数序列,这段代码怎么该呢?求教,谢谢。
#include<stdio.h>
int main(){
int max,sum,n,x;
while(scanf("%d",&n)!=EOF){
sum=0;
max=0;
while(n--){
scanf("%d",&x);
sum+=x;
if(sum>0){//sum大于0
if(sum>max){//sum大于max则sum赋值给max,否则继续加下一个数
max=sum;
}
}
else{//sum<0,置sum为0
sum=0;
}
}
printf("%d\n",max);
}
return 0;
}
展开
 我来答
智者总要千虑
高粉答主

2017-12-12 · 说的都是干货,快来关注
知道顶级答主
回答量:7.9万
采纳率:88%
帮助的人:1.3亿
展开全部
def findresult(serial): subresults = [] flag = False for i in serial: if flag and i < 0: flag = False elif flag: subresults[-1].append(i) elif i > 0: flag = True subresults.append([i]) return sorted(subresults, key=lambda x: sum(x), reverse=True)[0]

因为子序列必须是连续的,所以每个局部和最大的子序列是前后为边界或负数的区间
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式