买花瓶(简单动态规划DP)

Font Size: Aa Aa Aa

Description

john想买几个花瓶装饰一下新房。已知花店的花瓶被固定地排成一行并被依次排号,且花店有
一个原则,花瓶不能移动也不能挑选,只能买连号的花瓶。由于每个花瓶都有自己的美学价值,
请你帮john选出其中美学价值最大的一组。
比如,有六个花瓶,它们的美学价值分别是  3 -1 2 4 -6 5,那么john应该选3 -1 2 4(美学价值为8)
这一组。而不能挑2 3 4 5这一组(违犯),或是2 4组(美学价值为6,不是最大)。

Input

测试有很多次,对于每一次测试:
第一行为一个正整数 N( 1 <= N <=10000 ),代表花瓶的个数.当N=0时,代表测试结束;
第二行的N个整数Mi( -100 <= Mi <= 100 )分别代表每个花瓶的美学价值,其间用空格分开。

Output

每次测试输出一行,代表拥有最大美学价值的一组连号花瓶的美学价值MAX。

Sample Input

6
3 -1 2 4 -6 5
0

Sample Output

8
 
参考代码如下:
#include <stdio.h> 
int a[10005]; 
int main() 
{ 
    int n, i, j; 
    while (scanf("%d", &n), n) 
    { 
        int max = 0; 
        for (i = 0; i < n; i++) 
            scanf("%d", &a[i]); 
        for (i = 1; i < n; i++) 
        { 
            if (a[i - 1]>0)  a[i] = a[i - 1] + a[i]; 
            else a[i] = a[i]; 
        } 
        for (i = 0; i < n; i++) 
        { 
            if (a[i]>max)  max = a[i]; 
        } 
        printf("%d\n", max); 
    } 
    return 0; 
}

 

 

 

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值