• 最大子数组一


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

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

    设计思想:

      利用动态规划的思想,将该问题转化成计算包含当前数组元素以及不包含当前数组元素的子数组之间的较大者,并向前递推,最后变成计算第一个元素和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/

    工作照:

  • 相关阅读:
    C#秘密武器之表达式树
    C#秘密武器之特性
    [转]拷贝构造函数详解
    [转]STL 容器一些底层机制
    C++ Qt多线程 TcpSocket服务器实例
    QByteArray储存二进制数据(包括结构体,自定义QT对象)
    [转]浅谈 C++ 中的 new/delete 和 new[]/delete[]
    [转]QList内存释放
    Subscribe的第四个参数用法
    ROS多线程订阅消息
  • 原文地址:https://www.cnblogs.com/liqing1/p/5322757.html
Copyright © 2020-2023  润新知