zoukankan      html  css  js  c++  java
  • 最大子数组一

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

    要求:输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。

    设计思想:

      利用动态规划的思想,将该问题转化成计算包含当前数组元素以及不包含当前数组元素的子数组之间的较大者,并向前递推,最后变成计算第一个元素和0之间的较大者,从而解决了该问题。

    源代码:

     1 //计算一列数组中最大子数组之和,李青,胡金辉
     2 #include<iostream>
     3 using namespace std;
     4 #define max(x,y)  ( x>y?x:y )
     5 int main()
     6 {
     7     int i,length=0,list[1000];//定义循环变量、数组长度、数组
     8     int sum1;//记录包含当前数组元素的最大子数组之和
     9     int sum2;//记录不包含当前数组元素的最大子数组之和
    10     cout << "请输入数组元素:" << endl;
    11         while ((cin >> list[length++] ) && getchar() != '
    ');
    12         cout << "你输入了" << length << "个数" << endl;
    13     
    14     sum1 = list[0];
    15     sum2 = 0;
    16     for (i = 1; i < length; i++)
    17     {
    18         sum2 = max(sum2, sum1);
    19         sum1 = max(sum1 + list[i], list[i] );
    20     }
    21     sum1 = max(sum2, sum1);
    22     cout << "你输入的数组中最大子数组的值为:"<<sum1<<endl;
    23     return 0;
    24 }

    结果截图:

    总结:

      本次实验主要运用到了动态规划的思想,一开始并不是太清楚该思想是什么意思,后来在老师的解释下明白了,最后写出了程序,总的来说这次还是有很大收获的。

    项目计划总结:

    日期/任务 听课 编程 阅读相关书籍 网上查找资料 日总计
    周一 100 20 10 10 140
    周二   30   10 40
    周三   100 30 20 150
    周四 100 30     130
    周五   30   20 50
    周六   30 30   60
    周日          
    周总结 200 240 70 60 570

    时间记录日志

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3/21 14:00 15:50 10 100 听课 软件工程上课
      16:00 16:20 0 20 编程  
      16:30 16:40 0 10 阅读相关书籍 《构建之法》
      17:00 17:10 0 10 网上查找资料  
    3/22 19:00 19:30 0 30 编程  
      19:40 19:50 0 10 网上查找资料  
    3/23 14:00 16:00 20 100 编程  
      16:30 17:00 0 30 阅读相关书籍 《梦断代码》
      17:10 17:30 0 20 网上查找资料  
    3/24 14:00 15:50 10 100 听课 软件工程上课
      19:00 19:30 0 30 编程  
    3/25 19:00 19:30 0 30 编程  
      20:00 20:20 0 20 网上查找资料  
    3/26 9:00 9:30 0 30 编程  
      10:00 10:30 0 30 阅读相关书籍 《构建之法》

     缺陷记录日志:

    日期 编号 类型 引入阶段 排除阶段 修复时间 备注
    3/22 1 20 编码 编译 1min 未定义变量sum2
    3/25 2 20 编码 编译 1min 循环嵌套输出错误

    结对开发伙伴:胡金辉  http://www.cnblogs.com/hujinhui/

    工作照:

  • 相关阅读:
    mysql 大数据提取
    Python 爬虫实例(11)—— 爬虫 苏宁易购
    Python 爬虫实例(10)—— 四行代码实现刷 博客园 阅读数量
    Python MySQLdb 批量插入 封装
    Python MySQLdb insert(插入) 封装
    Python MySQLdb select(选择) 封装
    iOS开发-iPad侧边栏Tab选项卡切换
    iOS开发-xCode6(iOS 8)中应用程序图标和启动页面设置
    iOS开发-CoreMotion框架(加速计和陀螺仪)
    iOS开发-JSON解析
  • 原文地址:https://www.cnblogs.com/liqing1/p/5322757.html
Copyright © 2011-2022 走看看