| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 最大连续区间和C++ -> 正文阅读 |
|
[数据结构与算法]最大连续区间和C++ |
????????在求连续区间的最大和是一种动态规划的常见例题。 ????????那么如何能快速求算得一个长度为n的数组的最大连续区间和? ????????第一反应当然是,通过暴力计算每一个区间的和进而求其最大值。 ? ? ? ? ? ? ? ? 但时间复杂度到达了不可接受的O(n^2)... ????????而比较好的算法如下:
????????显然,最大连续区间一定是以某个数为结尾的区间。 ? ? ? ? 不妨假设以A[i]结尾的最大连续区间和为dp[i]。 ????????那么,我们只需要遍历原数组,比较A[i]以及A[i]+dp[i-1]. ? ? ? ? (即,当dp[i-1]<0时,直接舍弃前面的区间,以A[i]做dp[i],反之连接上之前的区间即可) ? ? ? ? ? ? ? ? 再退一步想,如果不查找区间位置,好像并没有存储数组的必要... ? ? ? ? 此时直接用temp接受临时的A[i]即可。
? ? ? ? 以上代码运用了动态规划的思想,通过求算Arr[i]结尾的区间最大值dp[i]的最大值为原数组Arr[i]的最大连续区间和。并且舍弃了原来的数组...所以它只能求和不能求区间的位置
? ? ? ? 以上通过存储数组来查找区间位置: ? ? ? ? ?当然,除了动态规划的方法还有分治等方法,但总的来说dp便于理解。 ? ? ? ? 文章制作不易,有不对的还望斧正。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:47:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |