博客
关于我
糖果(状态压缩,爆搜剪枝)
阅读量:747 次
发布时间:2019-03-21

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

用状态压缩与动态规划或Dijkstra算法解决:

  • 状态表示:用二进制掩码表示经过消费的所有口味,例如M=5的话,00000表示未消费,11111表示全部消费。

  • 初始化dp[mask]表示达到状态mask所需最少年包数。空集状态需要0包,故dp[0] = 0

  • 动态更新:环绕每个袋子,查看该袋子中的每种糖果口味,更新能达到的新状态。如果使用Dijkstra,则每次选取包数最少的状态,优先处理。

  • 预处理和优化:预处理每袋的状态组合,建立映射关系,方便快速查询。

  • 终点检测:当某些状态(如全1掩码)被处理到,则检查需要多少袋子。

  • 结果输出:若全1状态存在,返回包数;无法则返回-1。

  • 代码实现时,可使用暴力方法或优化算法(如Dijkstra),根据时间要求选择合适方案。

    \boxed{查询状态并检查是否覆盖了所有M种口味,若存在则返回最小包数,否则返回-1。}

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

    你可能感兴趣的文章
    Mysql学习总结(21)——MySQL数据库常见面试题
    查看>>
    Mysql学习总结(22)——Mysql数据库中制作千万级测试表
    查看>>
    Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询
    查看>>
    Mysql学习总结(25)——MySQL外连接查询
    查看>>
    Mysql学习总结(26)——MySQL子查询
    查看>>
    Mysql学习总结(37)——Mysql Limit 分页查询优化
    查看>>
    Mysql学习总结(38)——21条MySql性能优化经验
    查看>>
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql客户端中文乱码问题解决
    查看>>
    Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
    查看>>
    Mysql建立中英文全文索引(mysql5.7以上)
    查看>>
    MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
    查看>>
    MySQL必知必会总结笔记
    查看>>
    MySQL快速入门——库的操作
    查看>>
    mysql快速复制一张表的内容,并添加新内容到另一张表中
    查看>>
    mysql怎么删除临时表里的数据_MySQL中关于临时表的一些基本使用方法
    查看>>
    mysql性能测试工具选择 mysql软件测试
    查看>>
    MySQL慢查询-开启慢查询
    查看>>
    MySQL慢查询日志总结
    查看>>