1、B站视频链接:E23 线性DP 股票买卖K笔交易_哔哩哔哩_bilibili
#include <bits/stdc++.h>
using namespace std;
const int N=100010,M=110;
int w[N],f[N][M][2];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>w[i];
for(int j=0;j<=k;j++)f[0][j][1]=-1e6;//不合法的赋值无穷大
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]+w[i]);
f[i][j][1]=max(f[i-1][j][1],f[i-1][j-1][0]-w[i]);
}
}
cout<<f[n][k][0];//全部卖出
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=100010,M=110;
int w[N],f[M][2];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>w[i];
for(int j=0;j<=k;j++)f[j][1]=-1e6;//不合法的赋值无穷大
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
f[j][0]=max(f[j][0],f[j][1]+w[i]);
f[j][1]=max(f[j][1],f[j-1][0]-w[i]);
}
}
cout<<f[k][0];
return 0;
}