股票买卖

题目 股票买卖 IV

image-00c370b6

思路分析

image-e8823b66

代码实现

#include<bits/stdc++.h>

using namespace std;

#define endl '\n'

const int N=1e5+10,M=110;

int n,k;

int w[N];

int f[N][M][2];//考虑前i天的股票,第i天的 决策 是 k,且完成的 完整交易数 为 j 的方案

int main()

{

	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

	cin>>n>>k;

	for(int i=1;i<=n;i++)	cin>>w[i];

	memset(f,-0x3f,sizeof f);

	f[0][0][0]=0;

	for(int i=1;i<=n;i++){

		for(int j=0;j<=k;j++){

			f[i][j][0]=f[i-1][j][0];

			if(j)	f[i][j][0]=max(f[i][j][0],f[i-1][j-1][1]+w[i]);

			f[i][j][1]=max(f[i-1][j][1],f[i-1][j][0]-w[i]);

		}

	}

	int res=0;

	for(int j=0;j<=k;j++){

		res=max(res,f[n][j][0]);//出口一定是在 当前手上没股票的时候 如果有 就烂手里了 肯定亏

	}

	cout<<res;

	return 0;

 }

同类题型

视频讲解


⬅️ 大盗阿福 🏠 00-冲刺国赛 ➡️ 股票买卖2