博客
关于我
HJ41 称砝码 HJ41 称砝码
阅读量:524 次
发布时间:2019-03-07

本文共 1139 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要计算使用给定的砝码可以称出的物体的不同重量数量。每种砝码有不同的重量和数量,我们需要找到所有可能的总重量。

方法思路

我们可以使用动态规划来解决这个问题。动态规划是一种有效的方法来解决组合问题,尤其是当我们需要计算可以达到的目标值时。

具体步骤如下:

  • 初始化:创建一个布尔数组 dp,其中 dp[i] 表示是否可以通过现有的砝码组合得到重量 i。初始时,dp[0] 被设置为 True,因为我们可以称0重量。
  • 处理每个砝码:对于每个砝码,计算它可以贡献的所有可能的重量,并更新 dp 数组。对于每个砝码的重量和数量,我们从后向前遍历 dp 数组,避免重复计算。
  • 统计结果:遍历 dp 数组,统计所有可以达到的重量数量。
  • 解决代码

    n = int(input())
    m = list(map(int, input().split()))
    x = list(map(int, input().split()))
    max_possible = sum(mi * xi for mi, xi in zip(m, x))
    dp = [False] * (max_possible + 1)
    dp[0] = True
    for i in range(n):
    mi = m[i]
    xi = x[i]
    for k in range(1, xi + 1):
    weight = mi * k
    if weight > max_possible:
    continue
    for j in range(max_possible, weight - 1, -1):
    if dp[j - weight]:
    dp[j] = True
    count = sum(1 for j in range(max_possible + 1) if dp[j])
    print(count)

    代码解释

  • 读取输入:读取砝码的种数 n,每种砝码的重量 m 和数量 x
  • 计算最大可能重量:计算所有砝码的最大可能贡献重量 max_possible
  • 初始化动态规划数组:创建一个大小为 max_possible + 1 的布尔数组 dp,初始时 dp[0]True
  • 处理每个砝码:对于每个砝码,计算其所有可能的贡献重量,并更新 dp 数组。从后向前遍历避免重复计算。
  • 统计结果:遍历 dp 数组,统计所有为 True 的位置,得到可以称出的不同重量数量。
  • 这种方法确保了我们能够高效地计算所有可能的称重结果,并且避免了重复计算,保证了算法的正确性和效率。

    转载地址:http://nwdnz.baihongyu.com/

    你可能感兴趣的文章
    PGOS:今天动手给电脑装青苹果Win7 X64位系统
    查看>>
    pgpool-II3.1 的内存泄漏(一)
    查看>>
    PgSQL · 特性分析 · PG主备流复制机制
    查看>>
    PGSQL主键序列
    查看>>
    PGSQL安装PostGIS扩展模块
    查看>>
    Phalcon环境搭建与项目开发
    查看>>
    Phantom.js维护者退出,项目的未来成疑
    查看>>
    Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容
    查看>>
    phoenix无法连接hbase shell创建表失败_报错_PleaseHoldException: Master is initializing---记录020_大数据工作笔记0180
    查看>>
    Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
    查看>>
    phoenix连接hbase报错Can not resolve hadoop120, please check your network_记录026---大数据工作笔记0187
    查看>>
    Photoshop工作笔记001---Photoshop常用快捷键总结
    查看>>
    Reids配置文件redis.conf中文详解
    查看>>
    Photoshop脚本入门
    查看>>
    PHP
    查看>>
    Regular Expression Notes
    查看>>
    PHP $FILES error码对应错误信息
    查看>>
    PHP $_FILES函数详解
    查看>>
    PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
    查看>>
    php & 和 & (主要是url 问题)
    查看>>