我在浪里

我有一个上天的梦~

sdut 3100

现在问题来了,有一个一维数组,存储了n个正整数,下标依次为012.,n-1

现在要从中选取一部分数,你要给出一个选择方案使得你的方案满足下列要求:

  1. 这部分元素的下标应满足stst+5, st+5*2 , st+5*3, … , st+5*x (0 <= st < n ,st <= st+5*x < n)

  2. 在满足第一条要求的方案中,应选取其累加和最大的一种的方案。

输入

 多组输入。

对于每组输入:

第一行输入一个n(1 <= n <= 100000)

接下来的一行有n个整数y(-100000 <= y <= 100000)

输出

 对于每组数据,输出一个整数代表你的方案的累加和。

示例输入

10
1 2 3 4 5 6 7 8 9 10
3
1 -10 2
3
-1 -2 -3

示例输出

15
2
-1

#include<stdio.h>

#include<string.h>
#define INF 0x3f3f3f3f
int a[100005],n;
int dp(int t)
{
    int maxn=-INF;
    int sum=0;
    for(int i=t;i<n;i+=5)
    {
        sum+=a[i];
        if(sum>maxn)
            maxn=sum;
        if(sum<0)
            sum=0;
    }
    return maxn;
}
int main()
{
    int i;
    while(~scanf("%d",&n))
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        int maxn=-INF;
        for(i=0;i<5;i++)
        {
            int tt=dp(i);
            if(tt>maxn)
                maxn=tt;
        }
        printf("%d\n",maxn);
    }
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,点个赞随便转 https://blog.csdn.net/qq_20200047/article/details/51559811
想对作者说点什么? 我来说一句

Sdut-Ver5.2.0

2012年10月26日 2.12MB 下载

诺基亚3100电路图

2010年02月11日 243KB 下载

华三h3c 3100路由器说明书

2010年05月20日 9.67MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭