秋招突击——6/26~6/27——复习{二维背包问题——宠物小精灵之收服}——新作{串联所有单词的字串}

引言

  • 今天应该是舟车劳顿的一天,头一次在机场刷题,不学习新的东西了,就复习一些之前学习的算法了。

复习

二维背包问题——宠物小精灵之收服

以往的分析链接

在这里插入图片描述
在这里插入图片描述

个人实现
  • 这是第二次在做这道题,这是一个单纯的二维背包问题,需要理清楚最后是要你输出什么类型,先给20分钟在开发网站上尝试一下,然后在来具体分析。
#include <iostream>
#include <cstring>
#include <limits.h>

using namespace std;

const int N = 1010,M = 550,K = 110;// 其中的N表示的精灵球的数量,M是体力值,K是野生精灵的数量

int nt[K],mt[K];
int f[K][N][M];

int n,m,k;

int main(){
   
    cin>>n>>m>>k;
    for(int i = 1;i <= k;i ++){
   
        cin>>nt[i]>>mt[i];
    }

    // 二维背包问题计算状态转移矩阵变化的
    int res = f[k][n][m-1];
    for(int i = 1;i <= k;i ++){
   
        // 针对第i个物体,只有判定抓或者不抓两种情况
        for(int j = 0;j <= n;j ++){
   
            // 遍历合法情况下的精灵球数量
            for(int l = 0 ;l <= m - 1;l ++){
   
                // 遍历合法情况下的体力值,注意上下确界,体力值不能消耗完

                // 两种情况,抓或者是不抓,对应需要处理边界值的情况
                if (j-nt[i] >= 0 && l-mt[i] >= 0)
                    f[i][j][l] = max(f[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值