博客
关于我
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/

    你可能感兴趣的文章
    mysqldump 导出数据库中每张表的前n条
    查看>>
    mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
    查看>>
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>