首页 > 代码库 > HDU OJ Max sum 题目1003
HDU OJ Max sum 题目1003
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
for(int i=0;i<t;i++)
{
int n;
scanf("%d",&n);
int sum=0,max=-99999;
int curhead=1,rear=1,head=1;
for(int j=0;j<n;j++)
{
int temp;
scanf("%d",&temp);
if(sum<0)//小于零 说明開始加的是负数
{
curhead=j+1;//又一次计算开头元素的位置
sum=temp;
}else//假设大于等于0 就加上temp
{
sum+=temp;
}
if(sum>max)//假设sum超过max 又一次记录max 计算结尾元素的位置
{
rear=j+1;
head=curhead;
max=sum;
}
}
printf("Case %d:\n",i+1);
printf("%d %d %d\n",max,head,rear);
if(i!=t-1) printf("\n");
}
}
HDU OJ Max sum 题目1003