首页 > 其他分享 >PIPOJ 最大连续子序列

PIPOJ 最大连续子序列

时间:2023-01-19 23:34:57浏览次数:61  
标签:count int max start PIPOJ 序列 data 连续

题目描述

给定 K 个整数的序列{ N1,  N2,  ..., NK } ,其任意连续子序列可表示为{ Ni, Ni+1,...,Nj} ,其中1 <= i<= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 } ,其最大连续子序列为{ 11, -4, 13 } ,最大和为20。编写程序得到其中最大子序列的和并输出该子序列的第一个和最后一个元素的下标。

输入

测试输入包含若干测试用例,每个测试用例占2 行,第 1 行给出正整数 K( <100000) ,第 2 行给出 K 个整数,每个整数的范围-10000至10000 ,中间用空格分隔。

输出

对每个测试用例, 在 1 行里输出最大和、 最大连续子序列的第一个和最后一个元素的下标,中间用空格分隔。 如果最大连续子序列不唯一, 则输出序号 i 和 j 最小的那个(如输入样例的第 2、3组)。若所有 K 个元素都是负数,则定义其最大和为0,输出"0 0 0"。

样例输入

8
6 -2 11 -4 13 -5 -2 10
20
-10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3
8
-1 -5 -2 3 -1 0 -2 0
4 
-1 -2 -4 -3

样例输出

27 0 7
27 10 19
3 3 3
0 0 0
#include<stdio.h>
int main(){
    int num;
    while(scanf("%d",&num)!=EOF){
        int data[100005];
        int flag = 0;
        for(int i = 0; i < num; i++){
            scanf("%d",&data[i]);
            if(data[i] > 0) flag = 1;
        }
        int count = 0,max = 0;
        int start,end;
        int index;//记录上一个count大于max时,start下标. 
        for(int i = 0; i < num; i++){
            if(count > 0){
                count += data[i];
            }else{
                count = data[i];
                index = i;
            }
            if(count > max){//当count大于max时,将index赋值给start 
                end = i;
                start = index;
                max = count;
            } 
        }
        if(!flag){
            printf("0 0 0\n");
        }else{
            printf("%d %d %d\n",max,start,end);
        }
            
    }
    return 0;
}

参考链接:(5条消息) 1008: 最大连续子序列_没被稻草压垮的骆驼的博客-CSDN博客_1008 最大连续子序列和

题目链接:PIPIOJ

 

标签:count,int,max,start,PIPOJ,序列,data,连续
From: https://www.cnblogs.com/8023yyl/p/17062290.html

相关文章

  • Change Usernames(拓扑序列)
    题目链接题目描述:Yourunawebservicewith\(N\)users.The\(i\)-thuserwithacurrenthandle\(S_i\)wantstochangeitto\(T_i\).Here,\(S_1,…,\)and......
  • Rust Serde 反序列化的概念
    这几天在捣鼓Serde::Deserializer,发现有一点难理解。死磕了7、8小时后,算是明白了它的原理。如果你也想自己捣鼓,你可以试著把下列两个网址所有代码(代码是以1个简单json反序列......
  • 【Django drf】 序列化类常用字段类和字段参数 定制序列化字段的两种方式 关系表外键
    目录序列化类常用字段类和字段参数常用字段类常用字段参数选项参数通用参数序列化类高级用法之sourcesource填写类中字段source填写模型类中方法source支持跨表查询定制序......
  • 批量操作初始化序列初始值
    DECLARE TYPEtsiISRECORD( tVARCHAR2(100), sVARCHAR2(100), ivarchar2(100)); tsiTemptsi; maxIdvarchar2(20); BEGIN fortsiTempin( select'T_xxx......
  • PIPOJ 破译密码
    题目描述据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字......
  • 算法刷题 Day 18 | 513.找树左下角的值 112.路径总和 106.从中序与后序遍历序列构造二
    今日内容找树左下角的值路径总和113.路径总和ii从中序与后序遍历序列构造二叉树105.从前序与中序遍历序列构造二叉树详细布置找树左下角的值本地递归偏......
  • 括号序列问题
    括号序列,是一些由左右括号组成的序列(字符集很小)可以转化为树形结构,或者是一个二维折线图。这两种方式各有长处,三种形态变化丰富。其中树的类型其实是给括号定了一个欧拉......
  • LibreOJ L2056 「TJOI / HEOI2016」序列
    https://loj.ac/p/2056CDQ优化DP模板?首先定义对于第\(x\)个数其可以变为的最小值为\(Min_x\),最大值为\(Max_x\),初始为\(M_x\)。因为最多只会变一次数,不难想到......
  • Java反序列化-URLDNS利用链分析
    前言URLDNS链是Java反序列化中比较简单的一个链子,由于URLDNS不依赖第三方包和不限制jdk版本,所以经常用于检测反序列化漏洞。URLDNS并不能执行命令,只能发送DNS请求。(应该......
  • python序列
    类似于Java和C的数组,但python的”数组“可操作性更强,以下是常用APIinsert指定位置插入arr=[0,1,20,3,40,5,60,7,80,9]#下标1位置后加入值,结果[0,1,81,......