数组01

题目:返回一个整数数组中最大子数组的和。

要求:

  1、 输入一个整形数组,数组里有正数也有负数。

  2、 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

  3、 求所有子数组的和的最大值。要求时间复杂度为O(n)

设计思想:

  核心算法:动态规划。

源代码:

  

 1 //数组1
 2 //胡浩特、朱子嘉 2016/3/21
 3
 4 #include<iostream>
 5 using namespace std;
 6
 7 int MaxSum3(int a[], int n){//优化方案 时间O(n) 空间  O(1)
 8     //int A,N;
 9     int nStart = a[n - 1];
10     int nAll = a[n - 1];
11     for (int i = n - 2; i >= 0; i--)
12     {
13         if (nStart<0)
14             nStart = 0;
15             nStart += a[i];
16         if (nStart>nAll)
17             nAll = nStart;
18     }
19     return nAll;
20 }
21 int main()
22 {
23
24     int i, length;
25     cout << "请输入数组长度:";
26     cin >> length;
27     int a[50];
28     cout << "请输入数组值:";
29
30     for (i = 0; i < length; i++)
31     {
32         cin >> a[i];
33     }
34
35
36     cout<<MaxSum3(a, length)<<endl;
37     return 0;
38 }

  

时间: 2024-11-11 08:14:05

数组01的相关文章

数组01开发日志

项目开发日志 工程项目:数组01 开发人员:吕泽坤 开发 日期       开始时间                       结束时间           活动名称                               用时      2016/4/6 16:30 16:30 设计思路,解决判断数字问题 0:30 2.16/4/7 16:00 16:20 完成程序,发表博客 0.20           项目错误记录表 工程项目:数组01 开发人员:吕泽坤 开发日期          

Java数组01

Java数组01 数组概述 需求:现在需要统计某公司员工的工资情况,例如计算平均工资.找到最高工资等.假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦.为了解决这种问题,Java就提供了数组供我们使用. 那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话: 数组是存储多个变量(元素)的东西(容器) 这多个变量的数据类型要一致 数组的定义格式 数组的概念 数组时候存储用一种数据类型多个元素的容器

*数组-01. 字符转换

1 /* 2 * Main.c 3 * E1-数组-01. 字符转换 4 * Created on: 2014年8月20日 5 * Author: Boomkeeper 6 ******部分通过********** 7 */ 8 9 #include <stdio.h> 10 11 int main(void) { 12 13 char str[80] = { -1 }; 14 15 gets(str); 16 17 int i; 18 for (i = 0; i < 80; i++)

数组-01. 字符转换(15)

本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出. 输入格式: 输入在一行中给出一个不超过80个字符且以回车结束的字符串. 输出格式: 在一行中输出转换后的整数.题目保证输出不超过长整型范围. 输入样例: free82jeep5 输出样例: 825 跟0相关的要点,只有一个0,或者以0开头. #include <iostream> #include <stdio.h> #include <math.h> #include <str

PHP数组操作汇总

对于Web编程来说,最重要的就是存取和读写数据了.存储方式可能有很多种,可以是字符串.数组.文件的形式等.数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是我学习的小结,借此记之,便于以后鉴之. 1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组: 01 <?php 02     $number = array(1,3,5,7,9); 03     //定义空数组 04     $result = array(); 05     $color =a

有关货币问题的动态规划题目--有关01背包,完全背包,多重背包

背包dp:参考背包九讲以及给出一些题目 01背包 (先枚举物品,再逆序枚举容量) 给定n件物品和一个容量为V的背包,每件物品的体积是w[i],价值是va[i](1<=i<=n),求在不超过背包的容量的情况下,怎么选择装这些物品使得得到的价值最大? 例如:有5件物品,体积分别是{2,2,6,5,4},价值分别是{6,3,5,4,6} 递归式:F(i,v)=max(F(i-1,v), F(i-1,v-w[i])+va[i]),其中F(i,v)表示把前i种物品恰放入背包容量为v时取得的最大价值 把这

(转)01背包

文章作者:Yx.Ac   文章来源:勇幸|Thinking (http://www.ahathinking.com)   转载请注明,谢谢合作. --- 四月份还没写,不能这么荒废了呀,赶紧水一篇吧,哈哈.前些日子回顾了DP的一些基础,就做一下整理吧,从0-1背包开始. 本节回顾0-1背包的基本模型,关于它的实现有很多种写法,这里对不同实现做个简单列举,主要是写代码练手了,主要有以下几方面内容: ==0-1背包问题定义 & 基本实现 ==0-1背包使用滚动数组压缩空间 ==0-1背包使用一维数组

14-黑马程序员------C 语言学习笔记--- C语言二维数组

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 二 二维数组 01 二维数组的定义: 类型标识符 数组名[常量表达式][常量表达式]; 如:int a[3][4]; 表示定义了一个3行4列的整型二维数组a,含有12个数组元素. 02 二维数组的引用: 数组名[下标][下标]

13-黑马程序员------C 语言学习笔记--- C语言一维数组

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 四 简单构造数据类型 一 一维数组 01 一维数组的定义: 类型标识符 数组名[常量表达式]; 如:int a[10];其表示定义了一个名为a的整型数组,该数组共有10个元素,即10个整型变量,可以储存10个整型数据. 02 类