关于输入一个数列,求和最大的连续子序列,输出最大的和的问题
如果不输入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;
} 展开
如果不输入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;
} 展开
展开全部
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]
因为子序列必须是连续的,所以每个局部和最大的子序列是前后为边界或负数的区间
因为子序列必须是连续的,所以每个局部和最大的子序列是前后为边界或负数的区间
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询