状态机编程_vivado状态机

状态机编程_vivado状态机给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润,你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。输入格式第一行包含整数 N 和 k,表示数组的长度以及你可以完成的最大交易数量。第二行包含 N 个不超过 10000 的正整数,表示完整的数组。输出格式输出一个整数,表示最大利润。数据范围1≤N≤105,1≤k≤100输入样例1:3 22

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润,你最多可以完成 k 笔交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。

输入格式
第一行包含整数 N 和 k,表示数组的长度以及你可以完成的最大交易数量。

第二行包含 N 个不超过 10000 的正整数,表示完整的数组。

输出格式
输出一个整数,表示最大利润。

数据范围
1≤N≤105,
1≤k≤100

输入样例1:
3 2
2 4 1
输出样例1:
2
输入样例2:
6 2
3 2 6 5 0 3
输出样例2:
7

样例解释
样例1:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。

样例2:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4 。随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。共计利润 4+3 = 7.

题解
f[k][i][0]表示第i天已经进行了k次交易并且手里没货的最大收益
f[k][i][1]表示第i天已经进行了k次交易并且手里有货的最大收益

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
const int KN = 110;
int f[KN][N][2];
int a[N];
const int INF = 0x3f3f3f3f;
int main(){ 
   
    int n,K;
    cin>>n>>K;
    for(int i = 0;i <= K;i ++)f[i][0][1] = -INF;
    for(int i = 1;i <= n;i ++){ 
   
        cin >> a[i];
        for(int k = 0;k <= K;k ++){ 
   
            f[k][i][0] = f[k][i - 1][0];
            if(k >= 1)f[k][i][0] = max(f[k][i][0],f[k - 1][i - 1][1] + a[i]);
            f[k][i][1] = max(f[k][i - 1][1],f[k][i - 1][0] - a[i]);
        }
    }
    cout<<f[K][n][0];
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168686.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 并发加锁是怎么实现的_JAVA并发编程

    并发加锁是怎么实现的_JAVA并发编程业务锁在处理并发问题时,很多情况下需要用到业务锁来达到按照某个维度同步执行业务块。例子:@Override@Transactional(rollbackFor=Exception.class,noRollbackFor=TerminateException.class)publicApplyDOsubmitApply(ApplyDOapplyDO){…

    2022年9月21日
    0
  • IntelliJ IDEA热部署设置方法[通俗易懂]

    IntelliJ IDEA热部署设置方法[通俗易懂]一、开启idea自动build功能1、File->Settings->Build,Execution,Deployment->Compiler->Buildprojectautomatically->选中备注:网上好多说是Makeprojectautomatically,而我的是Buildprojectautomatically,…

    2022年5月12日
    94
  • 单源最短路径算法[通俗易懂]

    单源最短路径算法[通俗易懂]最短路径问题:如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。当然这只是最基础的应用,关于单源最短路径还有很多变体:1.单源最短路径2.单目的地最短路径3.单节点对最短路径4.所有节点对最短路径最短路径定义:路径p=的权是指组成p的所有边的权值之和从u到v的最短路径的权为

    2022年5月20日
    66
  • Ubuntu18 安装yum

    Ubuntu18 安装yum一.先执行一下命令更新软件源sudoapt-getupdatesudoapt-getupgrade二.检测是否安装build-essential包sudoapt-getinstallbuild-essential

    2022年6月24日
    22
  • Java实现在线预览–openOffice实现[通俗易懂]

    Java实现在线预览–openOffice实现[通俗易懂]Java实现在线预览–openOffice实现

    2022年6月9日
    49
  • ASEMI整流桥MB10F参数,MB10F特征,MB10F机械数据

    ASEMI整流桥MB10F参数,MB10F特征,MB10F机械数据编辑-ZASEMI整流桥MB10F参数:型号:MB10F最大重复峰值反向电压(VRRM):1000F最大有效值电压(VRMS):700V最大直流阻断电压(VDC):1000V最大平均正向输

    2022年7月2日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号