当前位置: 首页 > news >正文

算法学习 || 动态规划(买卖股票的最佳时机)

买卖股票的最佳时机

思路:

动态规划:

动规五部曲:

1.dp数组及其下标含义:

dp数组表示持有股票的利润(持有表示两个动作:1.之前买入,当前不卖出。2.当前买入),或者未持有股票的利润。使用二维数组,行(有多少天就有多少行)表示每一天,列(2列)表示持有和未持有的状态

2.确认递推数列:

1.持有股票状态的递推数列:dp[i][0] = max(dp[i-1][0] , -prices[ i ]);今天的持有股票利润由昨天决定和今天决定,要哪一天持有通过取最大值决定(注意dp数组表示利润,持有则要支付钱,当前利润就为负数,所以取最大值不影响)
2.未持有股票状态的递推数列:dp[ i ][ 1 ] = max(dp[i-1][1],prices[i] + dp[i-1][0]);同理取最大值。(注意dp数组中是利润,亏损为负,所以prices[i] + dp[i-1][0]直接加就行)

3.dp数组的初始化

dp[0][0] = -prices[0]; 持有的初始就是买入第一天
dp[0][1] = 0; 未持有的初始就是第一天不买入

4.遍历顺序:

从左往右

代码:

class Solution {
public:int maxProfit(vector<int>& prices) {int len = prices.size();if (len == 0) return 0;vector<vector<int>> dp(len,vector<int>(2));dp[0][0] -=prices[0];//dp数组表示的实际上是利润dp[0][1] = 0;for(int i =1;i<len;i++)//遍历天数{dp[i][0] = max(dp[i-1][0],-prices[i]);dp[i][1] = max(dp[i-1][1],prices[i] + dp[i-1][0]);//注意dp数组中是利润,亏损为负,所以直接加就行}return dp[len-1][1];}
};

遇到的问题:

dp数组的理解:dp数组表示持有未持有股票的利润

http://www.dtcms.com/a/450979.html

相关文章:

  • mRemoteNG下载安装配置教程(附安装包)
  • 山东网站营销推广费用网站电话改了子页怎么改
  • 做电器哪个网站好保定seo排名
  • I.MX8QM创建wic镜像文件
  • 做塑料的网站名字ui网页界面设计素材
  • 哪一款软件可以自己做网站免费申请自己的网站
  • 显示英文以及字符
  • 邯郸网站建设怎么做手机访问自动跳转到wap网站的代码
  • 网站备案知识做网站界面设计注意什么
  • 专业的饰品行业网站开发网站建设推广销售人员
  • 沈阳哪家网站制作公司比较好云南建设厅查证网站
  • Memcached stats sizes 命令详解
  • 大连网站制作案例口碑营销ppt
  • 网站建设网页制作软件有哪些教育行业网站建设价格
  • 算法竞赛常见bug或错误
  • ps做网站要求高吗c 怎么做能让窗体访问网站
  • 网站怎么做排名呢如何免费找精准客户
  • 怎么看一个网站是不是织梦网站建设的外国文献
  • 钢城网站建设百度推广和优化哪个好
  • 【操作系统基础】线程
  • 有哪些高端的网站教师可以做网站吗
  • 做网站商城的目的是什么网络服务协议模板
  • 兰州网站制作公司排名app小程序网站开发是什么
  • Shadow Masks Baking Direct Occlusion
  • 刚刚上海重大宣布windows优化大师的优点
  • 自做网站fifa世界排名最新
  • 面试经典150题[048]:汇总区间(LeetCode 228)
  • 做外贸需要做国外的网站吗附近企业建站公司
  • 网络营销网站建设诊断报告seo扣费系统
  • 建设档案员证书查询网站菏泽微信小程序制作