股市的交易日(动态规划算法)
股市的交易日
///
/// 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。
///给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。
///测试样例:
///[10,22,5,75,65,80],6
///返回:
///87
///
想法:
最多两次交易,前一次交易与后一次交易的结果想加,有关联,所以选用 动态规划算法
把序列分为两段
…
10 ||22 5 75 65 80
10 22||5 75 65 80
10 22 5||75 65 80
…
计算前一段跟后一段的最优解相加最优
c# 代码1
///使用:
/// int[] prices = { 10,2,5,75,65,80,5,6 };
/// int max = maxProfit2(prices, prices.Length);
///方法:static int maxProfit2(int[] prices, int n){Console.WriteLine("maxProfit2");int times = 0;int max = 0;int onemax = 0, twomax = 0;for (int i = 0; i < n; i++){onemax = 0; twomax = 0;for (int j2 = 0; j2 < i; j2++){for (int j3 = j2; j3 < i; j3++){times++;int vTmp = prices[j3] - prices[j2];if (vTmp > onemax){onemax = vTmp;}}}for (int k2 = i; k2 < n; k2++){for (int k3 = k2; k3 < n; k3++){times++;int vTmp = prices[k3] - prices[k2];if (vTmp > twomax){twomax = vTmp;}}}Console.WriteLine(onemax + "--"+ twomax);int tmpMax = onemax + twomax;if (max < tmpMax){max = tmpMax;}}Console.WriteLine("maxProfit2-end:" + times);return max;}
c# 代码2
///使用:
/// int[] prices = { 10,2,5,75,65,80,5,6 };
/// int max = maxProfit3(prices, prices.Length);
///方法:
static int maxProfit3(int[] prices, int n) {Console.WriteLine("maxProfit3");int max = 0;int times = 0;int onemax, twomax;for (int i = 0; i < n; i++){onemax = 0; twomax = 0;for (int j = 0; j < i; j++){for (int j2 = 0; j2 < j; j2++){times++;int tmpPri = prices[j] - prices[j2];if (tmpPri > onemax){onemax = tmpPri;}}}for (int k = i + 1; k < n; k++){times++;if ((prices[k] - prices[i]) > twomax){twomax = prices[k] - prices[i];}}Console.WriteLine(onemax + "--" + twomax);int tmpMax = onemax + twomax;if (tmpMax > max){max = tmpMax;}}Console.WriteLine("maxProfit3-end:" + times);return max;}
股市的交易日(动态规划算法)相关推荐
- 矩阵连乘算法代码JAVA_矩阵连乘问题的动态规划算法(java)
/** * 下面是矩阵连乘问题的动态规划算法 * 假设有6个矩阵: * A1 A2A3 A4 A5A6 * 30*35 35*15 15*5 5*10 10*20 20*25 则matrixChain ...
- 五大常用算法之二:动态规划算法
基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 基本思想与策略 基本思想与分 ...
- 矩阵连乘问题(动态规划算法)
动态规划算法思想简介: 将一个问题分解为多个子问题,这点和分治法类似,但是每个子问题不是独立的而是相互联系的,所以我们在求解每个子问题的时候可能需要重复计算到其他的子问题,所以我们将计算过的子问题的解 ...
- 实验二 动态规划算法 最大字段和问题
基本题二:最大字段和问题 一.实验目的与要求 1.熟悉最长最大字段和问题的算法: 2.进一步掌握动态规划算法: 二.实验题 若给定n个整数组成的序列a1,a2,a3,...,an,求该序列形如ai+a ...
- 【字符串】最长回文子串 ( 动态规划算法 ) ★
文章目录 一.回文串.子串.子序列 二.最长回文子串 1.动态规划算法 2.动态规划算法代码示例 一.回文串.子串.子序列 " 回文串 ( Palindrome ) " 是 正反都 ...
- 动态规划算法解最长公共子序列LCS问题
动态规划算法解LCS问题 作者 July 二零一零年十二月三十一日 本文参考:微软面试100题系列V0.1版第19.56题.算法导论.维基百科. 第一部分.什么是动态规划算法 ok,咱们先来了解下什么 ...
- 贪心、递归、递推以及动态规划算法的分析与对比
PS: 头一次规规矩矩的按照论文的格式写文章,呵呵.虽然是小儿科的不能再小儿科的东西了..不过..也忽悠了6000多字~~嘿嘿..肯定写的不好,第一次嘛..所以..接受大家一切批评哈!...文章N ...
- 动态规划算法的优化技巧
动态规划是信息学竞赛中一种常用的程序设计方法,本文着重讨论了运用动态规划思想解题时时间效率的优化.全文分为四个部分,首先讨论了动态规划时间效率优化的可行性和必要性,接着给出了动态规划时间复杂度的决定因 ...
- 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)
在前两集漫画中,我们通过一个算法问题的完整解题过程,讲述了动态规划的基本概念和思想.没看过前两集的朋友可以点击下面的链接: 漫画说算法–动态规划算法一(绝对通俗易懂,非常棒) 漫画说算法–动态规划算法 ...
最新文章
- c语言多组输入字符,关于c语言中 scanf 对多行字符的输入问题
- Android爬坑之旅之WebView
- http接口测试工具——RESTClient
- Bootstrap插件
- Google Chrome源码剖析【序】
- 【渝粤教育】广东开放大学 普通话训练 形成性考核 (48)
- H264 STAP-A解包代码(测试通过)
- UTC时间如何转换成北京时间—C语言代码
- Android Studio基于360加固的一键加固gradle脚本配置
- 很多人都不知道的如何通过银行如果最简便识别出联行号
- 计算机网络1MB等于多少b,1mb等于多少kb流量?1mb等于多少GB?1mb等于多少TB?1mb等于多少b...
- Xcode 10.1 安装模拟器无反应:点击create 无反应
- python 计算箱线图、中位数、上下四分位数等
- 【数据库原理及应用】——数据库设计(学习笔记)
- 【Gephi】初学者教程(一)「一步一步教你怎么画图」「值得放进收藏夹吃灰系列」
- GRACE重力卫星水文应用基本概念之时变重力场
- springboot集成shiro实现验证码校验
- Linux下的top命令PR,NI,VIRT,RES,SHR,S的解释
- matlab解二阶微分方程组,[微分方程组]急急急!用MATLAB按二阶龙格库塔法求解微分方程组,急用于毕业设计!...
- 使用 PyQT5 来做一个简易版库存管理系统(三)
热门文章
- C语言论坛系统[2023-01-03]
- Field restTemplate in com.jack.springcloud.controller.DeptController_Consumer required a bean of typ
- 自然科学计算机技术ppt,[自然科学]图像处理.ppt
- [Python]WEB编程--个人日记网站搭建(一)
- 北京功略----购物篇
- DaVinci:Camera Raw(CinemaDNG)
- c语言换行编辑,C语言怎么换行
- PAT甲级1121 Damn Single
- logical exclusive 与 physical exclusive 的区别
- 原神白铁矿位在哪里 原神白铁矿采集点位置分布图