试题:动态规划

news2024/11/19 17:21:11

爱吃鬼

小艺酱每天都在吃和睡中浑浑噩噩的度过。 可是小肚子是有空间上限v的。 小艺酱有n包零食,每包零食占据小肚子空间a_i并会给小艺酱一个甜蜜值b_i。 小艺酱想知道自己在小肚子空间上限允许范围内最大能获得的甜蜜值是多少?
在这里插入图片描述

使用c++和动态规划解题:一下为参考

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

int solution(const int v, const int n, std::vector<std::vector<std::string>>& vec) {
    int result{ 0 };
    std::vector<std::vector<int>> dp;
    dp.resize(n);
    for (size_t i = 0; i < n; i++)
    {
        dp[i].resize(v);
    }
    // TODO:
    //遍历行(零食数量)
    for (size_t i = 0; i < n; i++)
    {
        int a_i = atoi(vec[i][0].c_str());
        int b_i = atoi(vec[i][1].c_str());
        //遍历列(空间上限)
        for (size_t j = 0; j < v; j++)
        {
            //仅有一个零食,确定第一行的最大甜蜜值
            if (i == 0) {
                if (a_i <= j + 1) {
                    dp[i][j] = a_i;
                }
                else {
                    dp[i][j] = 0;
                }
            }
            else {
                if (a_i <= j + 1)
                {
                    //如果可以放下,有两种可能放或者不放
                    //放,则需要读取数量为i - 1的时候,j + 1 - a_i空间时的甜蜜值,之后再加上最新的甜蜜值
                    //j + 1是因为j代表了空间上限,但是j是0开始的
                    int receive_sweetness = dp[i-1][j + 1 - a_i] + b_i;
                    //不放,就相当于i-1个商零食放j的空间,之前已经计算过
                    int reject_sweetness = dp[i - 1][j];

                    //取最大
                    dp[i][j] = receive_sweetness > reject_sweetness ? receive_sweetness : reject_sweetness;
                }
                //新增的零食在当前空间容量上限j下,无法放下
                else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
    }
    return dp[n-1][v-1];
}

int main() {

    int v;
    int n;
    std::vector<std::vector<std::string>> vec;

    std::cin >> v;
    std::cin >> n;

    std::string line, token;
    for (int i = 0; i < n; i++) {
        std::vector<std::string> s;

        getline(std::cin >> std::ws, line);
        std::stringstream tokens(line);
        while (std::getline(tokens, token, ' ')) {
            s.push_back((token));
        }
        vec.push_back(s);
    }

    int result = solution(v, n, vec);

    std::cout << result << std::endl;

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1065967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

伦敦银最新价格能进吗?

不少新手的伦敦银投资者由于看不懂行情走势&#xff0c;在行情机会来临时总感觉患得患失&#xff0c;但由于又十分渴望在这个市场上实现收益&#xff0c;所以经常通过各种各样的方式方法和手段&#xff0c;希望行情走势什么时候会出现进场的机会。 可以肯定的是&#xff0c;伦敦…

大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

2023年中国干毛茶行业总产值、总产量及未来发展趋势分析:茶叶总产量与总产值均实现稳定增长[图]

中国各地持续发力做好“茶文章”&#xff0c;让茶产业成为重要的民生产业。我国是全球最大的茶叶生产国和消费国&#xff0c;2022年全国茶园面积达4995.40万亩&#xff0c;干毛茶总产值再创历史新高&#xff0c;达到3180.68亿元&#xff0c;较上年增加252.6亿元&#xff0c;同比…

Unity之Hololens如何使用ARAnchorManager 锚点系统实现世界锁

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

【python爬虫】闲鱼爬虫,可以爬取商品

目录 前言 一、介绍 二、爬虫流程 1. 确定关键词并构造URL 2. 发送网络请求 3. 解析HTML并提取数据 4. 保存数据 三、使用代理IP 四、完整代码 五、总结 前言 闲鱼是一个很受欢迎的二手交易平台&#xff0c;但是由于没有开放API&#xff0c;我们需要使用爬虫来获取数…

Ubuntu系统 OCR文字识别与 Latex公式识别

一、OCR文字识别 Step1&#xff1a;安装tesseract tesseract 是一个开源的OCR引擎&#xff0c;最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎&#xff0c;2005年惠普将其开源出来&#xff0c;之后google接手负责维护。目前稳定的版本是3.0。4.0版本加入了基于LSTM的神经…

LED显示屏单元板质量好坏如何分辨?

要分辨LED显示屏单元板的质量好坏&#xff0c;可以考虑以下几个关键因素&#xff1a; 分辨率和图像质量 查看显示屏的分辨率和图像质量。高分辨率和清晰的图像通常是质量较高的显示屏的标志。 注意观察图像是否有像素化、色彩失真或亮度不均匀的问题。这里关于LED显示屏的尺寸…

React xlsx(工具库) 处理表头合并

前端导出excel表格 引入xlsx插件&#xff0c;不然应该是运行不起来的 npm i xlsx xlsx中文文档 插件2 exceljs npm i exceljs exceljs中文文档 导出 例子 import { ExportExcel } from ./exportExcel/index;const columns[{title: id,dataIndex: item1,},{title: 序号,dataInd…

一座“城池”:泡泡玛特主题乐园背后,IP梦想照亮现实

“更适合中国宝宝体质”的主题乐园&#xff0c;被泡泡玛特造出来了。 9月26日&#xff0c;位于北京朝阳公园内的国内首个潮玩行业沉浸式 IP 主题乐园&#xff0c;也是泡泡玛特首个线下乐园——泡泡玛特城市乐园 POP LAND正式开园。 约4万平方米的空间中&#xff0c;泡泡玛特使…

java vue框架搭建

最近在使用spring boot 和vue .js搭建框架 首先用idea 创建demo 项目 使用mybatis 持久层框架&#xff0c;数据库mysql &#xff0c;maven构建项目 vue 使用命令nmp run build 构建后目录如下 把此项目dist下的static的文件夹拷贝到idea项目下的static&#xff0c;index.html…

开发工具:推荐几款非常漂亮的VScode主题

目录 Atom One Dark Theme Github Theme Night Owl Theme Night Owl JellyFish Theme Sublime Material Theme 深色 浅色 今天给大家推荐几款非常漂亮的VScode主题&#xff0c;值得收藏&#xff01; Atom One Dark Theme 它是市场上最好的深色主题之一。Atom 标志性的…

2023年中国旋挖钻机市场销量、竞争格局及行业发展趋势分析[图]

旋挖钻机是一种用于桩工基建项目中成孔作业等基础建设的工程机械。相比于其他桩工机械&#xff0c;旋挖钻机施工效率高&#xff0c;控制精度高&#xff0c;污染和噪音较小并且整机灵活度高&#xff0c;可以适应我国大部分土壤地质条件&#xff0c;如中东部地区砂土&#xff0c;…

卡尔曼滤波器设计及实例

1 卡尔曼滤波器基本原理 卡尔曼滤波常用于动态多变化系统中的状态估计&#xff0c;是一种通用性强的自回归滤波器。它的由来和NASA登月有关。其发明者鲁道夫.E.卡尔曼在一次访问NASA的时候&#xff0c;发现阿波罗计划中一个难点是轨道预测问题&#xff0c;因而提出了一种滤波器…

揭开黑客的神秘面纱:黑客文化、技术手段与防御策略

目录 1. 引言1.1 黑客的定义与起源1.2 黑客文化的形成与传承 2. 黑客的分类与目标2.1 道德黑客与恶意黑客2.2 黑客攻击的目标与动机解析 3. 黑客的技术手段3.1 网络入侵与渗透测试3.2 社会工程学与钓鱼攻击3.3 恶意软件与病毒传播3.4 数据泄露与身份盗窃 4. 防御黑客攻击的策略…

微信公众号怎么变更认证主体?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移是将原公众号的粉丝、违规记录、文章和素材库&#xff08;可选&#xff09;迁移至一个新的公众号。整体流程较为复杂&#xff0c;需花费7-10天。通过公众号迁移功能可以将A账号的粉丝、文章素材&#xff…

Bridge Champ助力我国桥牌阔步亚运, Web3游戏为传统项目注入创新活力

本届杭州亚运会,中国桥牌队表现杰出,共斩获1金1银1铜佳绩,其中女子团体夺得冠军,混合团体获得亚军。这充分展现了我国桥牌的实力,也彰显了桥牌作为亚运会体育竞技项目的影响力。与此同时,Web3游戏Bridge Champ为传统桥牌项目带来创新模式,将有望推动桥牌运动在亚运舞台上焕发新…

Node.js操作MySQL8.0数据库无法连接

Node.js操作MySQL8.0数据库无法连接 原创&#xff1a;丶无殇  2023-10-07 报错内容 使用node.js连接数据库MySQL 8时候&#xff0c;报错ER_NOT_SUPPORTED_AUTH_MODE&#xff0c;并且提示Client does not support authentication protocol requested by server; consider upg…

blender UV展开

快捷键&#xff1a;选面可以一点&#xff0c;选线或点变形&#xff0c;g 移动&#xff0c;l 孤岛化 a全选 在Shading视图下&#xff0c;给mesh建立一个栅格图的纹理 变成这个样子 UV实时展开&#xff1a; 在UV editing模式下&#xff0c;打开左右实时同步 焊接shift选中左边两个…

张量-形状变换相关函数

tf.shape(input,name None)它有两个参数,input和name,input可以是一个张量,也可以是一个数组和list。该函数返回的是input的形状(shape),而且一个类型为int32的张量。 示例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()array [[[1,1,1],[2,2,2]],…