首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

9度 1011 最大连续子序列

2013-03-26 
九度 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****************************************************************/

热点排行