zoukankan      html  css  js  c++  java
  • 数组问题(一)求子数组和的最大值

      这周我们没有了四则运算,又出现的新的任务:返回一个整数数组中最大子数组的和

      刚一看感觉还是不难的,只需将所有子数组的和都”+“起来再比较就能算出最大值,但是这是比较笨的方法。

      后来有个同学提出使用动态规划的方法可以实现,听他讲了思路之后,我觉得这个比第一个笨方法要好 :)

      然而后来我找到一个比较简便的方法:

      要是累加过程中和小于0,那么和最大的子数组不会包含前面子数组,之后将和归0,从下个元素重新开始计算。

      代码:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int i,num;
     7     cout << "请输入数组元素个数: " ;
     8     cin >> num;
     9     int *arr = new int[num];
    10     cout << "请依次输入数组元素" << endl;
    11     for (i = 0; i < num; i++)
    12     {
    13         cin >> arr[i];
    14     }
    15     int MaxSum = 0;
    16     int CurSum = 0;
    17     for (i = 0; i<num; i++)
    18     {
    19         CurSum += arr[i];
    20         if (CurSum > MaxSum)
    21         {
    22             MaxSum = CurSum;
    23         }
    24         if (CurSum < 0)
    25         {
    26             CurSum = 0;
    27         }
    28     }
    29     cout <<"该数组中最大子数组的和是: "<< CurSum<<endl;
    30     system("pause");
    31 
    32     return 0;
    33 }

    结果截图:

    代码编写的过程中没有出现什么问题,主要是问题不难,方法也比较简洁,这次还是学到了很多方法,动态规划什么的,也算是了解了:)

  • 相关阅读:
    mongodb MongoDB 聚合 group
    mongo数据库的各种查询语句示例
    Web测试方法总结
    python + selenium 自动化测试框架
    selenium关于断言的使用
    JavaScript利用键盘方向键(上下键)控制表格行选中
    TestNG 入门教程
    selenium+python之 辨识alert、window以及操作
    Selenium WebDriver中鼠标事件
    JS-运动基础(一)
  • 原文地址:https://www.cnblogs.com/zzcs/p/5323534.html
Copyright © 2011-2022 走看看