【算法刷题】每日打卡——动态规划(1)

2023-12-17

背包问题

例题一

有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i件物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0<N,V≤10000
0<vi,wi≤1000

输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
8
方法一:二维数组
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
//v[]体积 w[]价值
int f[N][N],v[N],w[N];
int main(){
    //wm:最大容量
    int n,vm;
    cin>>n>>vm;
    for(int i =1;i<=n;i++){
        cin>>v[i]>>w[i];
    }
    for(int i =1;i<=n;i++){
        for(int j =0;j<=vm;j++){
            f[i][j] = f[i-1][j];
            if(j>=v[i])
            f[i][j] = max(f[i-1][j],f[i-1][j-v[i]]+w[i]);
        }
    }
    cout<<f[n][vm];
    return 0;

}
方法二:一维数组
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N];
int main(){
    //wm:最大容量
    int n,vm,v,w;
    cin>>n>>vm;
  
    for(int i =1;i<=n;i++){
        cin>>v>>w;
        for(int j =vm;j>=v;j--){
          f[j]= max(f[j],f[j-v]+w);
        }
    }
    cout<<f[vm];
    return 0;

}

例题二

Hello Kitty想摘点花生送给她喜欢的米老鼠。

她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。

地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。

Hello Kitty只能向东或向南走,不能向西或向北走。

问Hello Kitty最多能够摘到多少颗花生。

1.gif

输入格式

第一行是一个整数T,代表一共有多少组数据。

接下来是T组数据。

每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。

每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。

输出格式

对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。

数据范围

1≤T≤100,
1≤R,C≤100,
0≤M≤1000

输入样例:
2
2 2
1 1
3 4
2 3
2 3 4
1 6 5
输出样例:
8
16
方法一:二维数组
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
//f[][]:最终结果 w[][]:花生数量
int f[N][N],w[N][N];

int main(){
    int T,R,C;
    cin>>T;
    while(T--){
        cin>>R>>C;
        for(int i =1;i<=R;i++){
            for(int j=1;j<=C;j++){
                cin>>w[i][j];
            }
        }
        for(int i =1;i<=R;i++){
            for(int j =1;j<=C;j++){
                f[i][j] = max(f[i-1][j],f[i][j-1])+w[i][j];
            }
        }

        cout<<f[R][C]<<endl;
    }

    return 0;

}
方法一:一维数组
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N],w;

int main(){
    int T,R,C;
    cin>>T;
    while(T--){
        cin>>R>>C;
//清除上次的影响
        memset(f,0,N);
        for(int i =1;i<=R;i++){
            for(int j=1;j<=C;j++){
                cin>>w;
                f[j] = max(f[j],f[j-1])+w;
            }
        }


        cout<<f[C]<<endl;
    }

    return 0;

}

例题三

给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。

输入格式

第一行包含整数 N。

第二行包含 N 个整数,表示完整序列。

输出格式

输出一个整数,表示最大长度。

数据范围

1≤N≤1000,
−109≤数列中的数≤109−109≤数列中的数≤109

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

代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N],a[N];

int main(){
    int n,res=0;
    cin>>n;


        for(int i =1;i<=n;i++){
            cin>>a[i];
            for(int j=i-1;j>=0;j--){
                if(a[i]>a[j])f[i] = max(f[j],f[i]);
        }
            f[i]++;
            res = max(res,f[i]);
    }
    cout<<res<<endl;
    return 0;

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【算法刷题】每日打卡——动态规划(1) 的相关文章

  • 关于“Python”的核心知识点整理大全24

    10 1 6 包含一百万位的大型文件 前面我们分析的都是一个只有三行的文本文件 但这些代码示例也可处理大得多的文件 如果我们有一个文本文件 其中包含精确到小数点后1 000 000位而不是30位的圆周率值 也可 创建一个包含所有这些数字的字
  • 知识图谱之关键实体数据爬取

    目录 爬取实体概览 爬取技术介绍 requests html Selenium 两者比较 学习路径 代码结构 高可用爬取策略 基于文件记录位点 请求失败指数退避重试 爬取代码 品牌数据 车系数据 车型数据 车型配置数据 代码地址 爬取实体概
  • 在Windows上通过cmake-gui及VS2019来 编译OpenCV-4.5.3源码

    文章目录 下载OpenCV 4 5 3源码 下载opencv contrib 4 5 3源码 打开cmake gui 选择生成器 通过 Visual Studio 2019 打开构建好的 sln工程文件 执行编译操作 执行安装操作

随机推荐

  • 屏幕超时休眠-Android13

    屏幕超时休眠 Android13 1 设置界面 1 2 属性值 1 2 1 默认值 1 2 2 最小值限制 1 3 属性值疑问 Settings System SCREEN OFF TIMEOUT 2 超时灭屏
  • OSG中几何体的绘制(一)

    本章主要介绍一些几何体的绘制方法 绘制几何体在场景中是非常常见的 也是最基本的 在很多应用程序中可以看到相当复杂的场景 但不管场景有多复杂 它们都是由少数几个基本的图形元素构建而成的 只要想想达芬奇那些伟大的作品也是由铅笔和画刷所完成的 读
  • xtcocotools 安装 mmcv

    目录 xtcocotools 2023测试成功 mmcv安装方法 xtcocotools 2023测试成功 pip install xtcocotools mmcv安装方法 pip install U openmim mim install
  • 星纵物联2024届秋招/校招内推信息/内推码

    公司名称 星纵物联 内推码 ESVMA3 内推来源 内推鸭小程序 官方招聘网站 厦门星纵物联招聘官网
  • yyy888

    8
  • MyBatis中的MapperScan的作用是干什么的?

    MapperScan 是 MyBatis Plus 提供的注解 它的作用是扫描指定包下的所有接口 将其注册成 MyBatis 的 Mapper 在 MyBatis Plus 中 它是用于替代原生 MyBatis 中 XML 配置文件中的
  • HarmonyOS(十四)——状态管理之@State装饰器(组件内状态)

    前言 在 初识状态管理 我们了解了状态管理的基本概念 以及管理组件拥有的状态有哪几种装饰器 今天我们就来认识一下第一种装饰器 State装饰器 组件内状态 概述 State装饰的变量 或称为状态变量 一旦变量拥有了状态属性 就和自定义组件的
  • LeetCode经典150题Golang版.121. 买卖股票的最佳时机

    题目 121 买卖股票的最佳时机 给定一个数组 prices 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算法来计算你所能获
  • Node.js 工作线程与子进程:应该使用哪一个

    Node js 工作线程与子进程 应该使用哪一个 并行处理在计算密集型应用程序中起着至关重要的作用 例如 考虑一个确定给定数字是否为素数的应用程序 如果我们熟悉素数 我们就会知道必须从 1 遍历到该数的平方根才能确定它是否是素数 而这通常非
  • 优质全套Spring全套教程

    hello 我是小索奇 这里把Spring全套笔记分享出来哈 便于大家查看 一起加油 Spring 1 Spring简介 1 1 Spring概述 官网地址 Spring Home Spring 是最受欢迎的企业级 Java 应用程序开发框
  • 学习区分dB、dBm、dBuV、dBi

    dB 对于分贝的概念 很多朋友最早接触这个概念 是用 分贝 评估声音的大小 声音的大小用分贝 dB 表示 是一种对数单位 用来描述声音的强度或功率比例 如果P是我们需要测试的声压级或声功率级 P0是参考值 通常取为标准听觉阈限的声压级 X
  • 最强Pose模型RTMO开源 | 基于YOLO架构再设计,9MB+9ms性能完爆YOLO-Pose

    实时多人在图像中的姿态估计面临着在速度和精度之间实现平衡的重大挑战 尽管两阶段的上下文方法在图像中人数增加时会减慢速度 但现有的单阶段方法往往无法同时实现高精度和实时性能 本文介绍了RTMO 这是一个单阶段姿态估计框架 通过在YOLO架构中
  • 腾讯技术工程总结-主流消息队列你了解哪些?

    文章参考 腾讯技术工程 关于消息队列的知识总结 主流消息队列你了解哪些 消息队列的发展历程 2003 年至今有很多优秀的消息队列诞生 如 kafka 阿里自研的 rocketmq 以及后起之秀 pulsar 消息队列在刚出现所需要解决的问题
  • 时序预测 | Python实现CNN-LSTM电力需求预测

    时序预测 Python实现CNN LSTM电力需求预测 目录 时序预测 Python实现CNN LSTM电力需求预测 预测效果 基本描述 程序设计 参考资料
  • 优质全套SpringMVC教程

    三 SpringMVC 在SSM整合中 MyBatis担任的角色是持久层框架 它能帮我们访问数据库 操作数据库 Spring能利用它的两大核心IOC AOP整合框架 1 SpringMVC简介 1 1 什么是MVC MVC 是一种软件架构的
  • MySQL数据库 DML

    目录 DML概述 添加数据 修改数据 删除数据 DML概述 DML英文全称是Data Manipulation Language 数据操作语言 用来对数据库中表的数据记录进行增 删 改操作 添加数据 工NSERT 修改数据 UPDATE 删
  • 【毕设项目】视频人像背景替换器-抠出视频中人像到动态背景中去

    描述 环境 简而言之 使用人体语义分割实现抠图替换动态背景 首先毫无疑问就是环境配置 附上链接 开始使用 飞桨 源于产业实践的开源深度学习平台 paddlepaddle org cn https www paddlepaddle org c
  • 第二百一十回

    文章目录 1 概念介绍 2 实现方法 2 1 整体思路 2 2 具体步骤 3 代码与效果 3 1 示例代码 3 2 运行效果 4 内容总结
  • MySQL数据库 DCL

    目录 DCL概述 管理用户 权限控制 DCL概述 DCL英文全称是 Data Control Language 数据控制语言 用来管理数据库用户 控制数据库的访 问权限 管理用户 1 查询用户 select from mysql user
  • 【算法刷题】每日打卡——动态规划(1)

    背包问题 例题一 有 N件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N V