数据结构习题记录(1)——最大子列和问题

题目:

给定KK个整数组成的序列{ N_1N?1??, N_2N?2??, ..., N_KN?K?? },“连续子列”被定义为{ N_iN?i??, N_{i+1}N?i+1??, ..., N_jN?j?? },其中 1 \le i \le j \le K1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。

本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:与样例等价,测试基本正确性;
  • 数据2:102个随机整数;
  • 数据3:103个随机整数;
  • 数据4:104个随机整数;
  • 数据5:105个随机整数;

输入格式:

输入第1行给出正整数KK (\le 100000≤100000);第2行给出KK个整数,其间以空格分隔。

输出格式:

在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

输入样例:

6
-2 11 -4 13 -5 -2

输出样例:

20
#include<stdio.h>
int main()
{
    int K,i,Maxsum=0,Thissum;
    scanf("%d",&K);
    int a[K];
    for(i=0;i<K;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<K;i++)
    {
        Thissum+=a[i];
        if(Thissum>Maxsum)
        {
            Maxsum=Thissum;
        }
        else if(Thissum<0)
        {
            Thissum=0;
        }
    }
    if(Maxsum<0)
    {
        printf("0");
    }
    else
    {
        printf("%d",Maxsum);
    }
    return 0;
 } 
 
时间: 2024-08-10 23:29:58

数据结构习题记录(1)——最大子列和问题的相关文章

2015/10/13 算法习题:最大子列和问题

已经正式开始学习数据结构和算法,先学了网易云课堂上的浙江大学的数据结构课,是陈越和何钦铭上的,了解了什么是数据结构和算法后,学习了一些时间空间复杂度分析的技巧,结合之前马虎掌握的学习,先从简单的题目入手学习. 题目是这样的: 给定了一个n个整数组成的序列,求它各个子列中,子列和最大的值. 输入:输入n个整数组成的序列 要求输出最大子列和. 示例: 输入: -2 11 -4 13 -5 -2 输出: 20 做出这题的难度不是很大,至少很容易可以做到暴力求解,然而暴力求解的时间复杂度是很大的. 我用

数据结构(一)-----4种方法求最大子列和

数据结构(一)-----4种方法求最大子列和 1.暴力算法 /* 作者:mys 功能:求最大子列和 日期:2018/7/23 */ #include<stdio.h> #include<stdlib.h> #define N 1000 int maxSubseSum(int a[], int n); void main() { int a[N] = { 0 },i; for (i = 0; i < N; i++) a[i] = rand() % 10000; printf(&

数据结构练习 01-复杂度1. 最大子列和问题(20)

给定K个整数组成的序列{ N1, N2, ..., NK },"连续子列"被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 10000

基础数据结构应用——最大子列和问题

给定K个整数组成的序列{ N?1??, N?2??, ..., N?K?? },"连续子列"被定义为{ N?i??, N?i+1??, ..., N?j?? },其中 1."最大子列和"则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 本题旨在测试各种不同的算法在各种数据情况下的表现.各组测试数据特点如下:

数据结构基本概念及算法和算法分析 -- 引自《新编数据结构习题与解析》(李春葆等著)

本文引自<新编数据结构习题与解析>(李春葆等著)第1章. 1. 数据结构的基本概念 1.1 数据 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称.例如,整数.实数和字符串都是数据. 1.2 数据元素 数据元素也称为节点,是表示数据的基本单元,在计算机程序中通常作为一个整体进行考虑和处理. 1.3 数据项 数据项是数据的最小单位.数据元素可以由若干个数据项组成.例如,学生记录就是一个数据元素,它由学号.姓名.性别等数据项组成. 1.4 数据对象

HDU 1003 &amp;&amp; HDU 1081(最大子列和,最大子矩阵和).

最大子列和,及其扩展最大子矩阵和,都是比较经典的dp,把这两题写在一起,共大家参考学习. ~~~~ lz弱菜啊,到现在还只能写这么水的DP...orz. ~~~~ 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 http://acm.hdu.edu.cn/showproblem.php?pid=1081 题意应该比较好理解,不解释了. 1003: #include<cstdio> #include<iostream> #inc

最大子列和问题(剑指offer和PAT)

01-复杂度1 最大子列和问题   (20分) 给定KK个整数组成的序列{ N_1N?1??, N_2N?2??, ..., N_KN?K?? },“连续子列”被定义为{ N_iN?i??, N_{i+1}N?i+1??, ..., N_jN?j?? },其中 1 \le i \le j \le K1≤i≤j≤K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编

复杂度1. 最大子列和问题

给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.“最大子列和”则被定义为所有连续子列元素的和中最大者.例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20.现要求你编写程序,计算给定整数序列的最大子列和. 输入格式: 输入第1行给出正整数 K (<= 100000):第2行给出K个整数,其间以空格分隔

PATtest1.3:最大子列和

题目源于:https://pintia.cn/problem-sets/16/problems/663 题目要求:输入一个数列,求其最大子列和. 问题反馈:1.部分C++代码不是很熟练 2.没有仔细读清楚题目,原文已经说过小于零的情况,不用过多的思考 解决方法:1.打印课上的常见代码,记忆背诵并默写 2.写题之前,先读题.多读英文的题,习惯英文读题 自己写的代码: #include<stdio.h> //using namespace std #define MAXN 100000 void