博客
关于我
糖果(状态压缩,爆搜剪枝)
阅读量: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自动化同步校验_Shell: 分享MySQL数据同步+主从复制自动化脚本_20190313_七侠镇莫尛貝...
    查看>>
    mysql自增id超大问题查询
    查看>>
    MySQL自带information_schema数据库使用
    查看>>
    MySQL获取分组后的TOP 1和TOP N记录
    查看>>
    mysql虚拟列表_动态网页制作-官方版合集下载-多特
    查看>>
    MySQL蜜罐反制获取攻击者信息
    查看>>
    Mysql表创建外键报错
    查看>>
    mysql表格调取数据库信息_MySQL™ 参考手册(获取有关数据库和表的信息)
    查看>>
    mysql表检查分析优化
    查看>>
    WARN: Establishing SSL connection without server‘s identity verification is not recommended.
    查看>>
    MySQL视图
    查看>>
    MySQL视图
    查看>>
    mysql视图建立MERGE算法和TEMPTABLE算法的区别(效率与表锁定问题)
    查看>>
    mysql视图,索引和存储过程
    查看>>
    mysql解压没有data_Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
    查看>>
    Mysql解压版安装
    查看>>
    Mysql设置字符编码及varchar宽度问题
    查看>>
    MySQL设置白名单限制
    查看>>
    MySQL设置远程连接
    查看>>
    MYSQL语句。
    查看>>