8. 有一个包含n个元素的数组arr,计算最大的子段和(允许空段),即

9. 有一个包含n个元素的首尾相连的环形数组arr,计算最大的子段和(允许空段)。

样例:数组[1, 3, -2, 6, -1],最大子段和应该为9,对应的子段为[6, -1, 1, 3]。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication8
{class Program{static void Main(string[] args){int[] inputArr = { 1, -2, 3, 10, -4, 7, 2, -5 };int[] inputArr2 = { 1, 3, -2, 6, -1 };Console.WriteLine(MaxSumSubArray(inputArr));Console.WriteLine(MaxSumSubLoopArray(inputArr2));}static int MaxSumSubArray(int[] input){if (input == null || input.Length == 0){throw new Exception("input can't be empty.");}int result = 0;int sum = 0;for (int i = 0; i < input.Length; i++){if (sum <0){sum = 0;}sum += input[i];if (sum > result){result = sum;}}if (result == 0){result = input[0];for (int i = 0; i < input.Length; i++){if (input[i]>result){result = input[i];}}}return result;}static int MaxSumSubLoopArray(int[] input){int[] intArr = new int[input.Length*2];for (int i = 0; i < input.Length; i++){intArr[i] = input[i];intArr[i + input.Length] = input[i];}int count = 0;int sum = 0;int result = 0;for (int i = 0; i < intArr.Length; i++){sum = 0;count = 0;for (int j = i; j < intArr.Length; j++){if (sum<0||count==input.Length-1){break;}sum += intArr[j];count++;if (sum>result){result = sum;}}}return result;}}
}

View Code

转载于:https://www.cnblogs.com/Ligeance/p/3535691.html

8.9. 最大连续子段和,以及循环最大连续子段和。相关推荐

  1. 1050 循环数组最大子段和

    1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该 ...

  2. 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】

    1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该 ...

  3. 线段树维护(最大区间和,最大子段和,最长连续上升子序列)

    本文主要介绍用线段树来维护(最大区间和,最大子段和,最长连续上升子序列)的问题. HDU 1540 Tunnel Warfare(最长连续区间+单点修改) 洛谷 P2894 [USACO08FEB]酒 ...

  4. 后端做app连续会员包月功能 -- IOS连续订阅 支付宝周期扣款

    IOS连续订阅总结 如何判断后续用户是续费 1. 服务端轮询续费表,会员到期的前一天,根据用户id.去苹果服务器检验用户是否续费成功a. 查询的状态应有:等待扣费.扣费失败b. 扣费失败 , 对于扣费 ...

  5. CAD连续标注怎么操作?CAD连续标注尺寸命令使用技巧

    CAD标注工具可以在图形中创建多种标注,并可对标注样式进行修改或编辑.但是有些新手设计师在绘图过程中,不知道CAD连续标注怎么操作,其实很简单,本节内容就给大家分享一下浩辰CAD软件中CAD连续标注尺 ...

  6. 【51nod - 1050】循环数组最大子段和(dp)

    题干: N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1], ...

  7. 用循环实现连续大写英文字母的输出

    Description 输入一个大写字母,用循环实现从该大写字母到最后一个大写字母Z的依次输出 Input 起始大写字母 Output 从该其实字母开始连续后续大写字母一直到大字字母Z Sample ...

  8. Sql Server常用命令整理篇:生成连续日期序列并循环

    1.生成日期序列 特别注意:经验证number不能超过2048,超过部分不可用 --生成日期序列,特别注意,经验证number不能超过2048,超过部分不可用 select observedate s ...

  9. R语言循环、连续检验

    以正态检验为例 设置工作环境后 读取数据: A <- read.csv("data.csv") 加载包 library(nortest) 查看变量 names(A) 设置一个 ...

  10. shell循环生成连续日期

    1,给定长度,循环生成日期 begin_day=-5 end_day=0 for((i=${begin_day};i<=${end_day};i++)); doday=`date -d &quo ...

最新文章

  1. Android :landscape||portrait 切换
  2. php tcp和udp的区别,HTTPS 和 HTTP、UDP 和 TCP 的区别
  3. 如何在SAP云平台Neo环境里进行workflow(工作流)的开发
  4. char 与 String 相等比较
  5. 在NetBeans IDE 6.9.1上搭建Android SDK环境(WIN和Linux平台)
  6. 韩顺平php视频笔记83-87 防盗链 $_SERVER http协议相关 文件相关
  7. matlab fwrite 多字节,单片机多字节串口接收
  8. 你会买新款 Macbook Pro 么?
  9. kprobe原理解析(一)
  10. java alder32,[java][io][ZIP]应用GZIP进行压缩和解压缩
  11. 西威变频器avo下载调试资料_小白妙招 | G120/G120C 变频器模拟量断线速度保持
  12. gcc 源码下载地址
  13. 重启iis的命令是什么?三种简单的重启方式
  14. 安卓按键:紫猫老师的正则教程
  15. C语言中文件指针,文件位置指针,详细解析
  16. 关于工程总承包(EPC)项目最高限价的说明
  17. 蒟蒻的网络流24题解题记
  18. etoken显示连接服务器失败,etoken
  19. 机器学习知识总结 —— 11. 关于目标检测中的IoU是什么
  20. NOIP2016模拟 星际争霸(二分)

热门文章

  1. ofo 彻底凉凉。。。
  2. 《算法图解》第四章课后作业
  3. 网络攻防第七周作业之20189304李小涛
  4. 'telent' 不是内部或外部命令,也不是可运行的程序或批处理文件。
  5. word2vec 数学原理
  6. NOIP模拟赛20161016R2
  7. HDOJ 2870 Largest Submatrix
  8. Periodic Call 1.0
  9. 【树链剖分/倍增模板】【洛谷】3398:仓鼠找sugar
  10. leetcode 761. Special Binary String