9度 1011 最大连续子序列
九度 1011 最大连续子序列题目1011:最大连续子序列时间限制:1 秒内存限制:32 兆特殊判题:否提交:2456解决:
九度 1011 最大连续子序列
题目1011:最大连续子序列时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2456
解决:1190
- 题目描述:
- #include <stdio.h>int main(){ int k,i,a[10000],sum,tempsum,begin,end,position,count,zero; bool negative,first; while(scanf("%d",&k),k) { sum=tempsum=begin=end=position=count=0; negative=true; first=true; for(i=0; i<k; i++) scanf("%d",&a[i]); for(i=0; i<k; i++) { tempsum+=a[i]; //记下第一次0出现的位置 if(a[i]==0 && first) {zero=i;first=false;}; if(a[i]>=0) negative=false; if(tempsum<0) { tempsum=0; position=i+1;//当前位置和为负 从下个位置开始 } //不能等于 否则没法保证是下标小的序列 if(tempsum>sum) { sum=tempsum; begin=position; end=i; } } if(sum==0) { if(negative)//全负 printf("%d %d %d\n",0,a[0],a[k-1]); else printf("%d %d %d\n",0,a[zero],a[zero]); } else printf("%d %d %d\n",sum,a[begin],a[end]); } return 0;}/************************************************************** Problem: 1011 User: windzhu Language: C++ Result: Accepted Time:20 ms Memory:1012 kb****************************************************************/