关于方案背包dp(动态规划)(openjudge:8467鸣人的影分身, 666放苹果)
时间:2021-04-22
本文章向大家介绍关于方案背包dp(动态规划)(openjudge:8467鸣人的影分身, 666放苹果),主要包括关于方案背包dp(动态规划)(openjudge:8467鸣人的影分身, 666放苹果)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最基本的类型:给出n个存储位(或者给出大小为n的存储量),给出m个存储物,求将m个存储物全部放进n个存储位中有多少种放置的方法(即求方案数sum)
注意:
对于部分题目,会给出存储物的数量以及大小
如果没有给出,比如例题一,那么就可以直接把存储物总量(0 ~ m)每一个都当作存储物,一次放入存储位中
基本的动态转移方程:dp[i][j] += dp[i - 1][j - q]
例题
(1)openjudge----8467----鸣人的影分身
在火影忍者的世界里,令敌人捉摸不透是非常关键的。我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。
影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。
针对不同的作战情况,鸣人可以选择制造出各种强度的影分身,有的用来佯攻,有的用来发起致命一击。
那么问题来了,假设鸣人的查克拉能量为M,他影分身的个数为N,那么制造影分身时有多少种(用K表示)不同的分配方法?(影分身可以被分配到0点查克拉能量)
分析:
翻译题意:给出n个存储位,给出m个存储量,求将m个存储量全部放进n个存储位中有多少种放置的方法(就是最基本的方案背包)
核心代码段:
int dp[15][15] = {}; dp[0][0] = 1; for(int q = 0;q <= m;q++)//枚举存储量的种类(每个分身的查克拉量
{ for(int i = 1;i <= n;i++)//第i个分身 { for(int j = q;j <= m;j++)//前i个分身共用掉了多少查克拉量 { dp[i][j] += dp[i - 1][j - q];//方案求和 } } }
例题持续补充中~
原文地址:https://www.cnblogs.com/mint-hexagram/p/14691417.html
- Java并发学习之ReentrantLock的工作原理及使用姿势
- Linux基础(day63)
- IOS WebView控件详解
- Java并发学习之synchronized使用小结
- 18.3/18.4/18.5 用keepalived配置高可用集群
- JDK容器学习之Queue:DelayQueue
- React-Native组件之 Navigator和NavigatorIOS
- JDK容器学习之Queue:ConcurrentLinkedQueue
- JDK容器学习之Queue: PriorityQueue
- React Native导航器之react-navigation使用
- Nginx 路由转发配置笔记
- React Native控件之ListView
- Java学习之深拷贝浅拷贝及对象拷贝的两种方式
- [周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP的Trait机制原理与用法分析
- 如何在centos8自定义目录安装php7.3
- 基于laravel belongsTo使用详解
- laravel model模型定义实现开启自动管理时间created_at,updated_at
- laravel ORM关联关系中的 with和whereHas用法
- thinkPHP事务操作简单案例分析
- php 多个变量指向同一个引用($b = &$a)用法分析
- 浅谈laravel5.5 belongsToMany自身的正确用法
- 在 PHP 和 Laravel 中使用 Traits的方法
- Laravel 修改默认日志文件名称和位置的例子
- php 命名空间(namespace)原理与用法实例小结
- Laravel Eloquent ORM 实现查询表中指定的字段
- Yii框架 session 数据库存储操作方法示例
- 使用laravel指定日志文件记录任意日志
- php实现微信小程序授权登录功能(实现流程)