鸣人的影分身(DP)

在火影忍者的世界里,令敌人捉摸不透是非常关键的。

我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。

影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。

针对不同的作战情况,鸣人可以选择制造出各种强度的影分身,有的用来佯攻,有的用来发起致命一击。

那么问题来了,假设鸣人的查克拉能量为 𝑀,他影分身的个数最多为 𝑁,那么制造影分身时有多少种不同的分配方法?

注意

  1. 影分身可以分配0点能量。
  2. 分配方案不考虑顺序,例如:𝑀=7,𝑁=3,那么 (2,2,3) 和 (2,3,2) 被视为同一种方案。
输入格式

第一行是测试数据的数目 𝑡。

以下每行均包含二个整数 𝑀 和 𝑁,以空格分开。

输出格式

对输入的每组数据 M𝑀 和 N𝑁,用一行输出分配的方法数。

数据范围

0 ≤ t ≤ 20,
1 ≤ M,N ≤ 10

输入样例:
1
7 3
输出样例:
8

思路:

题目大意是用给定的能量制作给定数量的分身,一共有多少方案,即把M分成N个数的和有多少方案,我们可以对这个问题列举一下,比如M=7,N=3

使用DP来解决,就需要划分情况,这里用最小值为0和不为0来划分

对于最小值为0的情况,我们仅需要考虑它前面非最小值的情况f[i][j-1],对于最小值不为0的情况,我们将每个元素都-1,这样子它就变成了f[i-j][j],这样f[i][j]的状态方程就出来了

示例代码:

#include<iostream>
#include<algorithm>
using namespace std;const int N=11;
int f[N][N]; //f[i][j]表示总和为i的分成j个数的方案
int n,m;int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d",&m,&n);f[N][N]={0}; //t组数据,每组都要先初始化f[0][0]=1; //总和为0,分成0个数,只有一种方案for(int i=0;i<=m;i++) //总和从0开始一直到m(为0时划分成多个数,每个数都是0,也算一种方案){for(int j=1;j<=n;j++) //因为要更新为f[i][j-1],所以j从1开始保证有意义,再者,f[0][j]表示把0拆成j个数,也是一种方案{f[i][j]=f[i][j-1]; //DP划分成两种情况,最小值为0和最小值不为0if(i>=j){f[i][j]+=f[i-j][j]; //只有i>=j时,i-j才有意义}}}cout<<f[m][n]<<endl;}return 0;
}

注意:j要从1开始不能从0开始,这是因为f[0][0]已经初始化为1了,如果下面循环j从0开始,那又会计算一次f[0][0],而我们计算f[i][j]是通过f[i][j-1]和f[i-j][j]计算得到的,j-1是负数的话没有意义,而i可以从0开始是因为 i为0时划分成多个数,每个数都是0,也算一种方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#友元函数与友元类

在C#中&#xff0c;并没有像C那样的友元函数和友元类的直接语法支持。C#中的访问控制是通过public、private、protected等访问修饰符来实现的&#xff0c;而不是通过友元的概念。 友元函数与友元类的概念 在C中&#xff0c;友元函数和友元类允许一个类或者函数访问另一个类的…

PHP转Go系列 | 变量常量的使用姿势

大家好&#xff0c;我是码农先森。 变量 在 PHP 语言中&#xff0c;初始化变量虽然只有一行&#xff0c;其实包含了两步&#xff0c;一是声明变量&#xff0c;二是赋值给变量&#xff0c;同一个变量可以任意再赋值任何类型的数据。 <?php// 初始化变量 $name "man…

Z世代职场价值观的重塑:从“班味”心态到个人成长的追求

近日&#xff0c;社交平台Soul APP联合上海市精神卫生中心&#xff08;俗称“宛平南路600号”&#xff09;发布《2024年Z世代职场心理健康报告》&#xff08;下称“报告”&#xff09;&#xff0c;发现今天的年轻人正以其独特的价值观和行为模式&#xff0c;重新定义成功与成就…

java 带有返回值的异步处理

1、先创建一个线程池 // 创建一个固定大小的线程池ExecutorService executor Executors.newFixedThreadPool(5); 2、创建一个异步现成执行你所需要执行的业务 CompletableFuture<String> future CompletableFuture.supplyAsync(() -> {System.out.println(Thread.c…

118.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件管理的界面与功能设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

visual studio error MSB8008:

新项目编译的时候&#xff0c;可能由于编译器的版本不一致导致的问题。 你的电脑上有两个不同版本的VS&#xff0c;或者你的程序拷贝到别人的电脑上去运行&#xff0c;或者你是从别人那里拷贝来的项目&#xff0c;而你们俩用的VS版本不一样&#xff0c;就会在运行的时候出现这…

初识Redis数据库(通俗易懂版)

Redis&#xff1a;不只是存储那么简单 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源且高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;同时也是内存数据库&#xff0c;常用于缓存、消息队列、会话存储等应用场景。支持字符串&#x…

MyBatis组件的DAO层拦截器

最近老大想对储存到数据库的数据进行加密&#xff0c;不让某表的某几列以明文的形式储存&#xff0c;巧的是这些数据是公司框架写好的&#xff0c;不能直接上代码改。 而业务层对于这张表的数据&#xff0c;应用的地方非常多&#xff0c;从业务侧进行拦截不现实。 所以&#xf…

Java版-剑指offer数据结构与算法 视频教程 下载

Java版-剑指offer数据结构与算法 视频教程 下载 01-数据结构与算法入门基础 clip.mp4 02-clip1.mp4 03-clip2.mp4 04-基础数据结构&#xff1a;数组&链表&#xff08;一&#xff09;.mp4 05基础数据结构&#xff1a;数组&链表&#xff08;二&#xff09;.mp4 06-基…

成都爱尔周进院长提醒毕业生摘镜,术式如何挑

高考完迎来一个悠长假期&#xff0c;考后放松的同时&#xff0c;也有不少同学开始“准备”。 为奔赴梦想&#xff0c;为了理想的专业和学校&#xff0c;不少人决定摘镜。 不少专业有视力要求&#xff0c;且不同专业方向的要求各有不同。我们先来看看有视力要求的专业有哪些&am…

数据集制作——语义分割前png、jpg格式标签图转yolo格式.txt文件(附代码)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

从0开始C++(二):类、对象、封装

目录 类&对象的概念 类的内容 对象的创建 ● 栈内存对象 ● 堆内存对象 封装 类&对象的概念 类和对象是一个比较抽象的概念&#xff0c;这里直接用一个实例方便理解。 类&#xff1a;类是一个抽象的概念&#xff0c;用来描述同一类对象的特点&#xff08;比如&am…

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛&#xff0c;只是第41名。先贴个A榜的成绩。A榜的前三十名晋级&#xff0c;个个都是99分的大佬&#xff0c;但是B榜的成绩就有点低了&#xff0c;应该是数据不同源的问题&#xff0c;第一名0.78分。官网链接&#xff1a;语音深度鉴伪识别 官方baselin:https://g…

Springboot 权限认证框架 -- SA-Token 简介(一)

引言 现今的软件开发中&#xff0c;权限认证与访问控制是每一个应用都必不可少的功能。SA-Token是一个简单、安全、易用的权限认证框架&#xff0c;它主要解决登录认证、权限认证、Session会话、单点登录等功能。SA-Token以其轻量级、零学习成本的特点&#xff0c;迅速赢得了开…

Java 网关进程在向驱动程序发送其端口号之前退出

java gateway process exited before sending the driver its port number #248TOC Spark项目 这个是远程调试的一个Spark项目&#xff0c;首先要保证 Spark正确安装&#xff0c;配置好环境变量&#xff0c;这是前提。 可能的问题 Java 网关进程是 Apache Spark 的一个关键…

数组的常用方法

1.Array.map() 此方法是将数组中的每个元素调用一个提供的函数&#xff0c;结果作为一个新的数组返回&#xff0c;并没有改变原来的数组 let arr [1, 2, 3, 4, 5]; let newArr arr.map(x > x * 2); //arr [1, 2, 3, 4, 5] 原数组保持不变 //newArr [2, 4, 6, 8, 10] …

Linux mongodb安装及简单使用

说明&#xff1a;本文章主要是对mongodb的单击安装 1.创建文件夹&#xff0c;准备安装包 cd /user/local mkdir tools 2.解压mongodb包 mkdir mongodb tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C mongodb 3.进入解压目录 cd mongodb cd mongodb-linux-x86_64-…

emm, ComfyUI的作者从Stability.AI离职了

&#x1f356;背景 今天在更新ComfyUI的过程中&#xff0c;看到Manager中有这样一段描述&#xff1a; 嗯&#xff1f;做了新的官方网站&#xff1f;然后开始新篇章&#xff1f; 难道说ComfyUI的作者从Stability.AI离职了&#xff1f; 赶紧点开链接看了下&#xff0c;emm&…

24.bytebuf创建

1.byteBuf创建方法 2.自动动态扩容的 package com.xkj.bound;import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import lombok.extern.slf4j.Slf4j;@Slf4j public class TestByteBuf {public static void main(String[] args) {//bytebuf可以不指定…

Java集合框架源码分析:LinkedList

文章目录 一、LinkedList特性二、LinkedList底层数据结构三、LinkedList继承关系参考&#xff1a; 一、LinkedList特性 特性描述是否允许为空允许是否允许重复数据允许是否有序有序是否线程安全非线程安全 二、LinkedList底层数据结构 LinkedList同时实现了List接口和Deque接…