• 数组题目小计(3)


    今天习得了一个比动态规划更容易看懂的算法:从数组的第一个元素开始累加至最后一个元素,第一个大于0的和赋予最大值,求得的大于0的和都与最大值进行比较,将较大的和赋予最大值,如果和小于0,则将和置为0,不影响后面数相加

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     cout << "请输入数组元素个数:";
     6     int num;
     7     cin >> num;
     8     cout << "请输入数组:";
     9     int i,array_[100];
    10     for (i = 0; i < num; i++)
    11     {
    12         cin >> array_[i];
    13     }
    14     int sum=0,max=array_[0];
    15     for (i = 0; i < num; i++)//最大值大于0
    16     {
    17         sum = sum + array_[i];
    18         if (sum > max)
    19             max = sum;
    20         if (sum < 0)
    21             sum = 0;
    22     }
    23     for (i = 0; i < num; i++)
    24     {
    25         if (max == 0)//最大值小于等于0
    26         {
    27             sum = sum + array_[i];
    28             if (sum > max)
    29                 max = sum;
    30         }
    31     }
    32     cout << max;
    33     return 0;
    34 }

    测试结果:

    心得体会:

    开心又担心,终于找到好方法解决问题了,但是速度实在是慢,要达到自己想达到的高度还需要很长一段路,要注意临界条件和正负值

  • 相关阅读:
    《JavaScript语言精粹》小记
    JavaScript之单例实战
    浅谈requireJS
    细说gulp
    Javascript之自定义事件
    ClipboardJS复制粘贴插件的使用
    重新学习vue基础
    正则简单说明
    JavaScript字符串api简单说明
    移动端浏览器问题
  • 原文地址:https://www.cnblogs.com/brucekun/p/5316601.html
Copyright © 2020-2023  润新知