(动态规划)股票交易日问题

在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。 本题采用的是动态规划的思想,如果您有更高效的解法,请留言或私信我,谢谢 阅读详情

携程2016开发工程师编程题第一题:股票交易日问题,只能一次买进卖出,本是一个很简单的问题,我却用了排序,用最大的减去最小的,好吧,居然通过了65%的测试用例,天真的以为自己终于做对一道线上编程题了,作为一个菜鸟的开始,这就当做我的第一篇博客吧。

-----------------------------------------------------------------------------------------------------------

第一题:求出一天股票买出和买入的最大利润,只有一次买入和卖出的机会

              输入的数据为:2,3,2,4     中间用,隔开

              输出为:2

解答:用Java编写,读取字符串,根据逗号拆分成字符串数组,再转化成整形数组,下面试具体代码

import java.util.*;

public class StockProfit {
	/**
	 * 计算一天   一次买进和卖出后的最大利润
	 * a[]表示一天股票价格的浮动
	 * length价格数组的长度
	 */
	public static int Profit(int a[],int length)
	{
		int maxValue = 0;
	    //用后面的值减去前面的值表示浮动的差值,因为要先买才能卖
		for(int i = length-1; i >=0 ; i--)
		{
			for(int j = i; j >=0;j--){
				if(a[i] > a[j])	{
					if((a[i] -a[j]) > maxValue){
						maxValue = a[i] -a[j];
					}				
				}
			}			
		}
		return maxValue;
	}
	public static void main(String[] args) {
		Scanner sin =new Scanner(System.in);
		String numstring = sin.nextLine();
		String [] datastr = numstring.split(",");
		int [] data = new int[datastr.length];
		for(int i =0; i

相类似的问题有多种,在网上一搜也有两次买进卖出的,果断学习了一下;

题目:在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

测试样例:10,22,5,75,65,80

输出:87

解答:用Java编写,只是在求两次是时候把股票的浮动分为2个部分分为求出最大收益,然后求出两次收益之和

import java.util.*;
/**
 * 股票的2次买入卖出买-卖-买-卖这样进行
 * trade函数表示在一个阶段一次买入卖出的最大利润
 * Profit2函数表示分为两次股票购买的最大利润
 */
public class StockProfit2 {
    public static int trade(int val[],int left,int right){
    	int min = val[left],max = 0;    	
    	if(left == right) {return 0;}
    	for(int j = left; j <= right;j++){    		
    		if(val[j] < min) min = val[j];
    		if((val[j] - min)>max) max = val[j] -min;
    	}
    	return max;
    }
	public static int Profit2(int a[],int length){
		int value,maxValue = 0;
		for(int i = 0; i < length;i++)
		{
			value = trade(a,0,i-1) + trade(a,i, a.length-1);//把股票的波动分为两个阶段,分别求最大值
			if(value > maxValue) maxValue = value;
		}		
		return maxValue;
	}
	public static void main(String[] args) {
		Scanner sin =new Scanner(System.in);
		String numstring = sin.nextLine();
		String [] datastr = numstring.split(",");
		int [] data = new int[datastr.length];
		for(int i =0; i

两次收益的计算方法不同,一个容易理解,一个性能高点

【阿里云大模型高级工程师ACP学习笔记】2.8 部署模型 【摘要】本文主要分享自学阿里云大模型高级工程师 ACP 认证中《2.8 部署模型》的学习笔记。详细介绍学习目标、梳理涵盖的知识点并评估其重要性和难易度,对既重要又困难的知识点进行重点分析,旨在为对阿里云大模型学习和认证感兴趣的读者提供学习思路和经验参考。 阅读详情

相关推荐

CVAT本地部署保姆级教程:用Docker Compose在Ubuntu上5分钟搞定你的私有数据标注平台

本文提供CVAT本地部署的保姆级教程,详细讲解如何在Ubuntu系统上使用Docker Compose快速搭建私有数据标注平台。从环境准备、Docker配置到CVAT部署全流程,涵盖硬件要求、性能优化及安全加固等关键步骤,帮助开发团队5分钟内完成高效、安全的标注环境搭建。

weixin_42619742的博客 383

动态规划:股票买卖问题(交易两次)——08

股票买卖问题(交易两次) 应该先了解买卖一次的题目 动态规划:股票买卖问题(只交易一次)——07 问题描述 给定一个数组代表股票每天的价格,请问只能买卖两次的情况下,最大化利润是多少 例如输入:{7,1,5,3,6,4} 第一次交易 5 - 1 = 4 第二次交易 6 - 3 = 3 最大利润为 4 + 3 = 7 算法思路 其实在明白了交易一次的算法实现思路之后,对于交易两次就显得比较简单了。只需要不断的将该数组进行切分,切分为两个数组,分别计算两个数组交易一次的最大价值即可。 首先定义dp1

weixin_44844089的博客 2349

Android 面试题 Handler篇

1.Handler的实现原理。

ViewHandKownHealth的博客 955

财经业务部门-客户端-四面面经 11-16

一面 10/25 16:04 1 指针与引用区别,指针、引用可以指向别的对象吗? 2 设计模型,单例模型应用场景(提示:配置初始化) 还是要看看设计模型这本书,侯捷老师明天见。 3 进程间通信方式,实现共享内存的方法,具体函数 shmget()和几个参数ID、大小、flag 4 进程的调度算法 先来先服务、短作业优先、时间片、优先级 5 C++的锁,特点、优缺点 互斥锁 mutex 睡眠等待 条件变量 pthread 读写锁 临界区、共享独占 自旋锁 6 http与https区别

weixin_42674696的博客 401

Rsoft仿真实战:长周期光纤光栅参数优化与模式耦合分析

本文详细介绍了使用Rsoft软件进行长周期光纤光栅(LPFG)参数优化与模式耦合分析的实战方法。通过Rsoft仿真,可以高效优化光栅周期、包层厚度等关键参数,深入分析纤芯模与包层模的耦合特性,为光纤通信和传感应用提供可靠的设计依据。

h0i1j2k3l的博客 1115

【08】C#实战篇——C#调用C++ 动态库dll,报错 “无法加载DLL“xxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”

摘要: 本文详细分析了C#调用C++封装的DLL时出现“无法加载DLL”错误的排查与解决方法。通过案例演示,列举了常见原因(如平台不匹配、路径错误、依赖缺失等),并重点介绍了使用VS的dumpbin工具检测DLL依赖项的方法。最终定位问题为缺失依赖的LineApi.dll和opencv_world455d.dll,将其放入C#的exe目录后解决。文章还对比了C++与C#的报错差异,提供了通用解决方案,包括检查运行时库、环境变量等,帮助开发者高效解决类似问题。 关键词: C#调用C++ DLL、dumpbin

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2098

题目:给你一个数组,代表每天股票的价格,比如【3,5,4,6,2,5】表示6天的价格,问如果只能买一次,并且提前知道每天的价格,最大收益是多少。这里的话最大收益就是3入6出或者2入5出,所以是3

这里写代码片#include include

二月鸟 5655

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

框架是否过度设计,这个问题其实我被问到很多次了。不仅仅是新手刚接触就觉得“过度设计”的评价,有些熟练的开发者也会有这种感觉。那么,这篇文章就来探究一下,为什么框架会让人感觉“过度设计”,以及框架如何设计,还有,如何让框架适应自己的节奏。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2118

刷力扣算法题--------------股票买卖

“”" 股票买卖,给定一个数组,第i个元素代表第i天的股价。假设最多允许进行1次买卖,求可能的最大利润是多少? 示例: 输入price = [12, 15, 14, 8, 11, 10, 12], 则输出最大利润是4。 “”" def get_max_profit(price): if price is None or len(price)==0: return 0 min_num=price[0] max_profit=0 for i in price:

qq_34595138的博客 294

FPGA/IC 秋招笔试/面试题总结(续)

FPGA/IC 秋招笔试/面试题总结(续)来啦… 文章目录二十七、状态机1. Moore/Mealy状态机2.一、二、三段式状态机 二十七、状态机 1. Moore/Mealy状态机 (1)Moore状态机: 输出只由当前状态决定,即次态=f(现态。输入),输出=f(现态) Moore型状态机的输出信号是直接由状态寄存器译码得到的。 Moore型状态机检测序列1101如下 Moore型状态机输出函数只由状态变量决定,想要输出Z=1,必须S4状态形成,即寄存器中的1101都打进去后才可以。输出Z=1会在

Crazzy_M的博客 2万+

AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘解决方案

本文主要介绍了AttributeError: module ‘lib’ has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK’解决方案,希望能对使用python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 5万+

LeetCode第122题解析

给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 ..

blue_coffeei的博客 506

GPU硬件架构与微架构深度解析09-GPU寄存器文件深度解析

本文探讨GPU架构中大规模寄存器堆的设计与高效分配算法。寄存器文件作为GPU关键组件,支持大规模线程并行和快速数据存取。文章分析了多体寄存器堆的设计考量,包括端口数量、冲突避免和功耗管理,并比较了线性扫描、图着色等寄存器分配算法的特点。还介绍了寄存器压缩、动态分区等高级优化技术,以及NVIDIA Ampere架构的实际案例。这些技术对提升GPU计算性能和能效至关重要。

2301_79143213的博客 120

买卖股票系列问题的处理方法以及go语言实现

这篇文章介绍了力扣(LeetCode)中常见的买卖股票问题的分类、处理方法以及其对应的动态规划解法。针对每类问题,文章提供了详细的状态转移方程分析,并给出了对应的 Go 语言代码实现。股票问题涵盖了从简单的单次交易到复杂的多次交易、冷冻期限制和交易手续费等多种场景。通过动态规划的思想,定义不同的状态(如持有股票、不持有股票等),文章展示了如何高效计算最大收益,并解释了每个代码实现的核心逻辑。

tatasix的博客 1838

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

122. 买卖股票的时机II——动态规划

方法一 动态规划 class Solution { public: int maxProfit(vector<int>& prices) { int size = prices.size(); int dp[size][2]; dp[0][0] = 0; //第 i 天交易完后手里没有股票的最大利润 dp[0][1] = -prices[0]; //表示第 i 天交易完后手里持有一支股票的最大利润

The_Dan的博客 428

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【贪心算法】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了LeetCode的来源),确保刷的题都是高频要面试考的题。 名曲目标题后,附上题目链接,后期可以依据解题思路反复快速练习,题目按照题干的基本数据结构分类,且每个分类的第一篇必定是对基础数据结构的介绍。难度

MaoLin Tian's Blog 664

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Leetcode 买股票问题模板

dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1] + prices[i]) //max( 选择 rest , 选择 sell ) 解释:今天我没有持有股票,有两种可能: 要么是我昨天就没有持有,然后今天选择 rest,所以我今天还是没有持有; 要么是我昨天持有股票,但是今天我 s...

thebs2的博客 238

309---最佳买卖股票的时机(含冷冻期)

class Solution { public: int maxProfit(vector<int>& prices) { int dp[100][2]; // zero means do not hold the share // one means hold the share int length=prices.size(); if(length==1) ret

不停 175

LeetCode_动态规划_困难_123.买卖股票的最佳时机 III

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

代码星辰的博客 358

714. 买卖股票的最佳时机含手续费

✅做题思路or感想 一道股票问题,特点是在卖出的时候要考虑税收的因素 买入一次卖出一次算一次交易,所以在卖出那里扣税收就可以了 dp数组含义 dp[i][0]是第i天持有股票时能获得的最大利润 dp[i][1]是第i天没有股票时能获得的最大利润 推导公式 dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]); dp[i][1] = max(...

Mikey99的博客 267

leetcode-买卖股票的最佳时机 II

一.题目描述 给定一个数组 prices ,其中prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 二.代码 public int maxProfit(int[] prices) {..

pubgNO1的博客 105

Leetcode刷题笔记——122. 买卖股票的最佳时机 II【DP】

题目 思路 显然采用DP,难点在于状态转移方程 每天最多只允许持有一支股票,即每天的状态只可能是持有一支股票或未持有,用DP[n][2]记录每天的最大利益,其中dp[i][0]表示第i天未持有股票的最大收益,dp[i][1]表示第i天持有股票的最大收益。 则有,未持有股票时,可能是i-1天就未持有,也可能是第i天卖出去了 持有股票时,可能是i-1天就持有了,也可能是第i天买的: 显然其边界为dp[0][0]=0,dp[0][1]=-prices[0]。 应该从小到大计算收益 代码 class Solu

weixin_43904469的博客 514

122. 买卖股票的最佳时机 II (可交易多次)

这题和前一题的不同之处在于这里可以多次交易(一次交易是指一次买入和卖出完成)。 1.定义dp数组: 下标从0开始 dp[i][0] 表示第i天交易完之后 ,手里没有股票的最大利润。 dp[i][1] 表示第i天交易完之后 ,手里有股票的最大利润。 则我们要的结果为: 第n-1天交易完后,手里没有股票的最大利润。 2.状态转移方程: 一:dp[i][0] = max(dp[i-1][0],dp[i-1][1]+price[i]) 解释: 第i天交易完后,手里没有股票。可能的情况有: 第i-1天就没有股票,

qq_35027690的博客 277

acwing 1055. 股票买卖 II

题面 题解(状态机模型) f[i][0] : 第 i 天手中没有股票 f[i][1] : 第 i 天手中有股票 f[0][0] =0 (第0天手中没有股票)f[0][1]= -INF(非法状态,题中让求最大值,所以初始化为最小值) 代码 #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using names

qq_44791484的博客 168

每日一题之买卖股票的最佳时机

买卖股票的最佳时机

Hongggggggg 582

LeetCode第3天 | 动态规划 | 20220715

第三天leetcode

weixin_45041379的博客 249
上一篇: 基于内容的图像检索
下一篇: TF-IDF与余弦相似性的应用——完成新闻的相似性检测和自动摘要
Traveling_DING
博客等级 码龄12年 65粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值