Problem B:MAX SUM

Description 

给定由n整数(可能为负数)组成的序列 {a1,a2,…,an},求该序列形如ai+ai+1,…,+aj的子段和的最大值。当所有的整数均为负数时定义其最大子段和为0。 

Input 

输入包含多组测试数据。第一行为一个整数C,表示有C组测试数据,接下来有2*C行数据,每组测试数据占2行,每组测试数据第一行是1个整数n,表示有n个整数,接下来一行有n个整数,它们之间用空格隔开. 

Output 

你的输出应该有C行,即每组测试数据的输出占一行,它是计算出的最大子段和.

Sample Input 

1

6

-2 11 -4 13 -5 -2

Sample Output 

20

#include <stdio.h>

int maxsum(int n,int *a)

{

   int sum=0,b=0,i,j;

   for(i=1;i<=n;i++)

   {

     if(b>0) b+=a[i];

     else b=a[i];

     if(b>sum) sum=b;

   }

   return sum;

}

main()

{

   int m;

   scanf("%d",&m);

   while(m--)

   {

   int a[100],i,max,n;

   scanf("%d",&n);

   for(i=1;i<=n;i++)

     scanf("%d",&a[i]);

   max=maxsum(n,a);

   printf("%d\n",max);

   }

}

posted on 2013-05-15 23:42 Mua‘@远 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/tsy12321/archive/2013/05/15/3080977.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值