华为机试 放苹果

2023-11-07

在这里插入图片描述
题解:动态规划

采用dp[i][j] 表示 i个苹果放入j个盘子的不同分法数。
状态转移:
我们首先要明确一点,
j个苹果放入i个盘中中,总共有下列两种情况:

  1. 盘子全部放满
  2. 至少有一个盘子不放(为空)

一.当i>j 时,也就是苹果数多于盘子数时。

1)考虑盘子全部放满的情况,那么我们可以先每个盘子都放入一个苹果占位置。则剩下dp[i-j][j] 。等价于求解把i-j 个苹果放入j个盘子。
2)考虑至少有一个盘子不放的情况,也就相当于求解dp[i][j-1]。

由上我们可以得到i>j 时的状态转移方程:
dp[i][j] = dp[i-j][j] + dp[i][j-1]

二.当i<j 时,也就是苹果数少于盘子数时。
这时苹果不够,盘子肯定会有空的情况。等价于求解 把i个苹果放入i个盘子 ,即 dp[i][i]
得到状态转移方程:dp[i][j] = dp[i][i]
二.当i=j 时,也就是苹果数等于盘子数时。

同上分析,总共有下列两种情况:

  1. 盘子全部放满
  2. 至少有一个盘子不放(为空)

盘子全部放满只有一种情况(一一对应)。至少有一个盘子不放 对应于dp[i][j-1]。
对应的状态转移方程:
dp[i][j] = 1 + dp[i][j-1]

初始状态:

dp[0][x] 即苹果为0时,全部对应0种放法。
dp[1][x] 即苹果为1时,全部对应1种放法。

dp[x][0]即盘子为0时,全部对应0种放法。
dp[x][1]即盘子为1时,全部对应1种放法。

代码如下:

#include <iostream>
using namespace std;
#include<vector>

int main() {
    int m;
    int n;
    while(cin>>m>>n)
    {
    vector<vector<int>> dp(m+1,vector<int>(n+1,0));
    
    for( int i=0 ;i<=n;i++)
    {   
        dp[0][i]=0;
        dp[1][i]=1;
    }
     
    for(int i=0;i<=m;i++)
    {   
        dp[i][0] = 0;
        dp[i][1] = 1;
    }
    for(int i=2;i<=m;i++)
        for(int j=2;j<=n;j++)
        {
            if(i>j)
                dp[i][j] = dp[i][j-1]+dp[i-j][j];
            else if(i==j)
                dp[i][j] = dp[i][j-1]+1;
            else
                dp[i][j] = dp[i][i];
        }
    cout<<dp[m][n]<<endl;
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为机试 放苹果 的相关文章

  • 可孚医疗:「最懂互联网」的医疗器械企业是如何炼成的?

    如果说钉钉在过去的标签是软件 是低代码 那么在医疗这个赛道里 这些标签已经不足以成为钉钉价值的侧写 除了固有标签之外 在可孚医疗的场景里 钉钉可以连接 可以成为智能BI 也更可以做到内外部协同等 作者 皮爷 出品 产业家 1000分 打开可
  • GetX项目级实战

    在使用了 Provider 一年后 遇到了很多阻力 期间尝试过 BLoC MobX 均不如意 一个样本代码太多 使用复杂 一个生产代码要等很久 难道 Flutter 就没有诸如原生 Android 的 jetpack 套装一样方便的套件吗
  • Cyclic Components CodeForces - 977E(找简单环)

    先求连通块 再看是不是所有连通块的点的度数为2 如果是那就是简单环 只不过我觉得我这个代码时间复杂度还是挺高的 虽然这题没啥问题 不过我看有他人是一遍用dfs找环 一遍判断找到环时的那个点的度数是不是2 AC代码 include
  • ES:一次分片设计问题导致的故障

    现象 1 单节点CPU持续高 2 写入骤降 3 线程池队列积压 但没有reject 4 使用方没有记录日志 排查 1 ES监控 只能看到相应的结果指标 无法反应出原因 2 ES日志 大量日志打印相关异常 routate等调用栈 core a
  • Java是解释型还是编译型语言?

    Java是解释型还是编译型语言 首先JVM是什么 JVM虚拟机也是java的运行环境 因为所有系统平台都支持JVM 所以实现了Java的跨平台 我们可以把JVM虚拟机比作人 有食物供我们食用 当我们需要吃哪种食物的时候就吃哪个实物 在JVM
  • 深度学习笔记(五) 代价函数的梯度求解过程和方法

    作为自己的笔记系列 方便自己查阅和理解 1 什么是梯度 梯度 本意是一个向量 矢量 当某一函数在某点处沿着该方向的方向导数取得该点处的最大值 即函数在该点处沿方向变化最快 变化率最大 为该梯度的模 在二元函数的情形 设函数z f x y 在
  • Linux C中对json格式数组数据的生成与解析

    在网络通信中 数据经常被做成json格式的来进行传输 那么我们怎么在linux系统中去做json格式的数据呢 怎么将接收到的json格式的数据解析出来呢 1 linux json库的安装 1 下载json c源码包 2 解压json c的源
  • Android Studio NDK开发注意

    1 如果JNILibs armeabi中有相应的库文件 编绎重新生成的 so文件不会打包到新的apk中
  • 干掉 “重复代码” 的技巧有哪些?

    软件工程师和码农最大的区别就是平时写代码时习惯问题 码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码 业务同学抱怨业务开发没有技术含量 用不到设计模式 Java 高级特性 OOP 平时写代码都在堆 CRUD 个人成长无从谈
  • UDP包传送字符串实现方法以及方格乱码的出现原因和解决办法

    在使用socket发送udp包传输文本时 由于包中的char型数组是定长的 且其长度大于消息长度 所以其中必有很多空元素 当接收端接收到udp包时进行转码 空元素就会被转码成方块形状的乱码 解决办法 每条消息发送完毕后添加 作为记号 接收后
  • 浏览器渲染机制 (二)浏览器主进程-浏览器内核-浏览器渲染流程

    文章目录 浏览器主进程和浏览器渲染进程的通信过程 浏览器内核 渲染进程 中线程之间的管理 GUI渲染线程与JS引擎线程互斥 JS阻塞页面加载 WebWorker JS的多线程 WebWorker与SharedWorker 总结浏览器渲染流程
  • adb通过网络连接

    1 使用USB数据线连接设备 2 在命令行输入adb tcpip 5555 5555为端口号 可以自由指定 3 断开 USB数据 此时可以连接你需要连接的 USB设备 4 再计算机命令行输入 adb connect lt 设备的IP地址 g
  • 自动计算30天内的股价最高价源代码

    我可以回答这个问题 您可以使用以下代码来计算30天内股价的最高价 复制 import pandas as pd import yfinance as yf 设置股票代码和日期范围 symbol AAPL start date 2021 01
  • Python绝技:运用Python成为顶级黑客

    Python 是一门常用的编程语言 它不仅上手容易 而且还拥有丰富的支持库 对经常需要针对自己所 处的特定场景 以极少的代码量实现所需的功能 Python绝技 运用Python成为顶级黑客结合具体的场景和真 实的案例 详述了 Python
  • 《软件测试的艺术》第三章 代码检查、走查和评审

    软件测试的艺术 第三章 代码检查 走查和评审 3 1 代码检查与走查 3 2 代码检查 3 2 1 代码检查小组 3 2 2 检查议程与注意事项 3 2 3 对事不对人 和人有关的注意事项 3 2 4 代码检查的衍生功效 3 3 用于代码检
  • 100个python算法超详细讲解:农夫过河

    100个python算法超详细讲解 谷哥技术 1 问题描述 一个农夫在河边带了一匹狼 一只羊和一棵白菜 他需要把这三样东西用 船带到河的对岸 然而 这艘船只能容下农夫本人和另外一样东西 如果农夫 不在场的话 狼会吃掉羊 羊也会吃掉白菜 请编
  • 鸿蒙内核阅读笔记-定时器

    鸿蒙内核阅读笔记 定时器 简介 核心模块 定时器 los swtmr c 介绍 阅读代码 函数部分 简介 近期在阅读鸿蒙liteOS a 由于是初次探索内核的奥秘 将一些阅读的心得进行分享 希望能在作为笔记的同时 也能帮助更多人学习 感谢图
  • springboot + eureka集群,实现注册中心,实现负载均衡

    搭建eureka集群 新建一个boot项目 File new project 如图选择 next 起名字如下 gt next finish 新建3个注册中心 以三个注册中心为例 想多的自己加 项目名字上 new module next 起名
  • Basic Level 1055 集体照 (25分)

    题目 拍集体照时队形很重要 这里对给定的 N 个人 K 排的队形设计排队规则如下 每排人数为 N K 向下取整 多出来的人全部站在最后一排 后排所有人的个子都不比前排任何人矮 每排中最高者站中间 中间位置为 m 2 1 其中 m 为该排人数

随机推荐

  • PowerDesigner安装步骤和打印错误

    1 解压 2 双击运行安装包 等待初始化 3 初始化完成后点击next 4 选择地区 同意协议 完成后点击next 5 选择安装位置 完成后点击next 6 选择要安装的组件 eclipse我不需要 需要可以勾选并配置 完成后点击next
  • pandas apply使用多列计算生成新的列

    在python数据分析中 有时需要根据多列数据生成中间结果 pandas给我们带来了很多方便 通常简短的代码可以实现一些高级功能 灵活掌握一些技巧可以事倍功半 pandas的apply方法用于对指定列的每个元素进行相同的操作 下面生成一个d
  • 静态代码分析工具清单:开源篇(各语言)

    本文是一个静态代码分析工具的清单 共有26个工具 包括4个 NET工具 2个Ada工具 7个C 工具 4个Java工具 2个JavaScript工具 1个Opa工具 2个Packaging工具 3个Perl工具 1个Python工具 1 N
  • Python——列表排序和赋值

    1 列表排序 列表排序方法 ls sort 对列表ls 中的数据在原地进行排序 ls 13 5 73 4 9 ls sort ls sort reverse False 默认升序 reverse True 降序 ls 13 5 73 4 9
  • Mysql备份工具xtraback全量和增量测试

    Mysql备份工具xtraback全量和增量测试 xtrabackup 是 percona 的一个开源项目 可以热备份innodb XtraDB 和MyISAM 会锁表 官方网址http www percona com docs wiki
  • 系统运维日常工作有哪些,应该具备哪些技能

    一 日常工作内容 看监控 网站流量 CDN流量 看邮件有没有普通业务监控报警 看有家中有没有其他需要做的工作 处理报警 查看报警的原因 和开发一起解决 并且尽量找出避免再次发生的方法 例如添加一些定时清理脚本 处理发布 基本都是自动化 但是
  • 使用tab键分割的文章能快速转换成表格。( )_Word教程:最常用的 7 个 Tab 键用法,瞅一眼就会了...

    Tab键一直是键盘上 不起眼 的一个按键 平时很多人可能不会去碰触这个键 实际上 它有很多实用的功能 如果用好了 可以大大提高我们的操作效率 01 段首空两格 写文章时 通常段首需要空两格 许多人会直接敲空格 这种操作是很Low的 其实 你
  • git cherry-pick apply-merge 任意commit(s)

    文章目录 必杀技 困惑 cherry pick 必杀技 是什么让Git 从众多版本控制系统中脱颖而出 独领风骚 当然是其分支模型 正因如此 人称分支模型为Git的 必杀技 如果不能熟练的运用Git的分支技巧 那就远离了Git的精华 困惑 我
  • zabbix配置微信报警

    如有错误 敬请谅解 此文章仅为本人学习笔记 仅供参考 如有冒犯 请联系作者删除 6 1 注册企业微信 企业微信注册地址 https work weixin qq com 设置总部门名称添加成员 也可以成员扫码加入 点击 成员加入 过程略 6
  • C语言实现RGB888转BMP格式图片功能

    1 bmp格式介绍 bmp格式图片里实际存储的也是RGB原始数据 可以分为8bit 16bit 24bit 32bit的bmp格式 也就是指bmp图片中保存的RGB是用8bit 16bit 24bit 32bit来表示 简单理解就是在原始R
  • 2020年IT技术的发展趋势!

    在IT范畴 企业指导者在IT范畴做出的选择不只会对业务开展和客户关系产生影响 也会对整体经济产生影响 而整体经济越来越依赖于为关键业务提供牢靠效劳的企业网络 随着岁末年初的到来 如今是瞻望将来一年行业开展趋向的时分 以便企业为做出明智的决议
  • 1054 求平均值

    1054 求平均值 20 分 本题的基本要求非常简单 给定 N 个实数 计算它们的平均值 但复杂的是有些输入数据可能是非法的 一个 合法 的输入是 1000 1000 区间内的实数 并且最多精确到小数点后 2 位 当你计算平均值的时候 不能
  • 手写Mybatis

    Mybatis核心配置文件就是为了配置Configration 因此要首先会解析Mybatis核心配置文件 首先使用dom4J解析Mybatis核心配置文件 新建模块演示dom4j解析 xml 目录放错了 无所谓 引入依赖 从原来项目可以拷
  • MMDrawerController(0.6.0) 文档翻译(简介,非API文档)

    Mutual Mobile Drawer Controller 随着使用抽屉效果的应用越来越多 MMDrawerController应运而生 MMDrawerController是一个仅支持侧边抽屉导航的轻量级库 同时库中还提供了定制展现
  • QListWidget 关闭滚动条,用鼠标拖动QListWidget进行滚动

    效果如下 采用QListWidget显示候选词 然后鼠标可以点击左键进行拖动 实现代码如下 m ListWidget new QListWidget m backgroud m ListWidget gt setViewMode QList
  • SQLite下载历史版本

    SQLITE 指定版本下载 下载地址 SQLite Tags step1 挑选版本 以3 30 1为例 step2 进入下载链接 选则为Classic View 点击18db032d step3 选择下载版本则可
  • 一些servlet的代码

    一些servlet的代码 添加数据 WebServlet name AddServlet value AddServlet public class AddServlet extends HttpServlet StudentService
  • 3.2 回溯法—N皇后问题

    1 问题描述 在 n n n times n n n的棋盘上摆放 n n n个皇后 使任意两个皇后都不能处于同一行 同一列或同一斜线上 2 问题
  • uniapp 跳转支付宝支付

    saId 作用 20000123 支付宝收款码 10000007 支付宝扫一扫 let authUrl alipays platformapi startapp saId 10000007 qrcode decodeURI res code
  • 华为机试 放苹果

    题解 动态规划 采用dp i j 表示 i个苹果放入j个盘子的不同分法数 状态转移 我们首先要明确一点 j个苹果放入i个盘中中 总共有下列两种情况 盘子全部放满 至少有一个盘子不放 为空 一 当i gt j 时 也就是苹果数多于盘子数时 1