zoukankan      html  css  js  c++  java
  • 作业1

    3)教科书三本都想读:优先级为《代码大全》、《敏捷开发》、《重构》

    4)从第二次作业开始每次都写效能分析的优化和单元测试。

    5)思路一:一开始看到这个题目,有一个想法是分规模,比如数组为a[n],当子数组只有1个数时,比较各个子数组的和的大小,一直考虑到子数组有n个数,发现此种算法复杂度为O(n^3),放弃;

        思路二:考虑动态规划解法,对数组a[n],目标函数为b[1,j] = max{sum[j], b[1,j-1]}, j>1; b[1,1] = a[1].

                   而sum[j]=max{sum[j-1]+a[j], a[j]}, j>1; sum[1] =a[1]. 很轻松地可以看出来,算法复杂度为O(n).这是两层的动态规划,需要维护两个数组,想了一个晚上才想出来。不过有了目标函数就好办了。

                   具体算法如下:

     1 int max(int a[], int n)
     2 {
     3       int max = a[0];
     4       int sum = a[0];
     5       int i;
     6       for(i = 0; i < n; i++){
     7           sum = sum+a[i] > a[i] ? sum+a[i] : a[i];
     8           max = max > sum ? max : sum;
     9       }
    10       return max;  
    11 }
  • 相关阅读:
    matplotlib
    python 面向对象(进阶篇)转载武沛齐
    Python 面向对象(初级篇)
    jupter nootbok 快捷键、NumPy模块、Pandas模块初识
    爬虫系列之mongodb
    python迟邦定
    爬虫之selenium模块
    爬虫数据解析的三方式
    爬虫之requests模块
    315题
  • 原文地址:https://www.cnblogs.com/mountainking/p/3333873.html
Copyright © 2011-2022 走看看