鸣人的影分身(DP)

news2024/9/21 4:38:15

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

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

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

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

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

注意

  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和最小值不为0
                if(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.coloradmin.cn/o/1840200.html

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

相关文章

构建多模态模型,生成主机观测指标,欢迎来战丨2024天池云原生编程挑战赛

在当前云计算和微服务架构日益普及的背景下&#xff0c;企业和开发者对云资源的依赖日益加深。Elastic Compute Service&#xff08;ECS&#xff09;作为提供计算能力的核心服务&#xff0c;承担着众多的业务。随着微服务架构的广泛应用&#xff0c;任务的部署和执行变得更为灵…

测试范围不足漏测问题 4大解决技巧

日常开发测试过程中&#xff0c;经常出现&#xff1a;开发人员改动产品测试人员不知道&#xff0c;或测试范围不足&#xff0c;导致产品漏测的情况。这往往导致产品发布后出现未发现的缺陷&#xff0c;产品体验效果不佳&#xff0c;影响客户满意度。而严重的缺陷需要紧急修复&a…

SAP MIGO 050 BADI:字段 GOITEM-XXXXX 未准备好输出

背景&#xff1a; MIGO过账时候需要根据某些条件更改某些字段的值&#xff0c;当要改的字段在前台不显示时&#xff0c;通过MB_MIGO_BADI~LINE_MODIFY去更改时&#xff0c;则会出现以下报错&#xff1a;MIGO050 解决方案1&#xff1a; 通过配置将该字段配置显示出来即可&…

黑马头条Minio报错non-xml response from server错误的解决方法

今天在写项目的时候&#xff0c;想测试minio上传文件功能是否正常&#xff0c; 但是每次都出现non-xml response from server的错误。 自己也在网上找了很多解决方法&#xff0c;大部分是说用户名和密码的配置问题&#xff0c;但是检查后发现并没有错误。 最后发现是自己的dock…

瓦罗兰特教你怎么玩低价区+超适配低价区的免费加速器

《无畏契约》&#xff08;VALORANT&#xff09;是一款款英雄为核心的5V5第一人称战术射击PC游戏。在瓦罗兰特游戏中&#xff0c;玩家完成每日任务即可以获得大量的经验升级&#xff0c;另外我们也可以多多完成主线和支线任务&#xff0c;来加快升级的速度。玩家通过挑战副本&am…

深度学习(十三)——损失函数与反向传播

一、损失函数&#xff1a;Loss Function 官网文档&#xff1a;torch.nn — PyTorch 2.0 documentation 1. Loss Function的作用 每次训练神经网络的时候都会有一个目标&#xff0c;也会有一个输出。目标和输出之间的误差&#xff0c;就是用\(Loss\) \(Function\)来衡量的。所以…

C++跨平台socket编程

C跨平台socket编程 一、概述1.1 TCP协议1.1 TCP 的主要特性1.2 TCP报文格式 UDP报文格式IP协议使用windows编辑工具直接编辑Linux上代码 二、系统socket库1.windows上加载socket库2.创建socket2.1 windows下2.2 linux下 3.网络字节序4.bind端口5.listen监听并设置最大连接数6.a…

【Linux】环境基础开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile)

文章目录 Linux 软件包管理器 yumLinux开发工具Linux编辑器-vim使用vim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总批量化注释和批量化去注释vim简单的配置解决一个小问题 Linux编译器-gcc/g作用gcc/g 语法预处理编译汇编链接什么是函数库 Linux调…

vscode + CMake编译(opencv显示图片工程)

1.opencv 2.Cmake 2.1 简介 CMake是一个跨平台的安装&#xff08;编译&#xff09;工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件&#xff1b;Cmake 并不直接建构出最终的软件&#xff0c;而是产生标准的建…

mfc140.dll电脑文件丢失的处理方法,这4种方法能快速修复mfc140.dll

mfc140.dll文件是一个非常重要的dll文件&#xff0c;如果它丢失了&#xff0c;那么会严重的影响程序的运行&#xff0c;这时候我们要找方法去修复mfc140.dll这个文件&#xff0c;那么你知道怎么修复么&#xff1f;如果不知道&#xff0c;那么不妨看看下面的mfc140.dll文件丢失的…

1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页

一、源码特点 python Django个性化电影推荐管理系统是一套完善的web设计系统mysql数据库 利用elasticsearch存储浏览数据 &#xff0c;对理解python编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 开发环境pycharm…

Java面试八股之myBatis中#{}和${}标识的区别是什么

myBatis中#{}和${}标识的区别是什么 MyBatis中的#{}和${}都是用来动态地向SQL语句中插入参数的&#xff0c;但它们之间存在几个关键的区别&#xff1a; 预编译与字符串替换&#xff1a; #{}是预编译处理的参数占位符。MyBatis会将#{}中的内容替换为一个预编译语句的参数标记…

全民拼购:引领商业新潮流,共创共赢新篇章

在当下的商业格局中&#xff0c;一种曾被忽视但实则具有颠覆性价值的商业理念正在逐步显露其锋芒。与传统的交易方式相悖&#xff0c;这一模式在我近期接触到的某个实例中&#xff0c;即便在用户基数尚未突破二十万之际&#xff0c;也能实现日均销售额逼近五千万的辉煌成绩&…

2024青海三支一扶招1910人7月6日笔试

&#x1f4e2;2024年青海省三支一扶计划招募1910人公告已发布&#xff01; 小&#x1f004;️帮大家整理好了考试关键时间点&#xff1a; ★ 报名时间&#xff1a;6月20日至6月25日 ★ 报名网站&#xff1a;青海省人事考试信息网&#xff08;www.qhpta.com&#xff09; ★ 网上…

停止 Windows 更新

首先按住 win r&#xff0c;输入 regedit&#xff1a; 点击确认&#xff0c;进入注册表页面&#xff1a; 依次点击右侧&#xff1a;HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> WindowsUpdate -> UX -> Settings&#xff1a; 进入编辑器后&#xff0c;右键…

亲测:无影云电脑免费三个月已经缩短为1个月

亲测&#xff1a;无影云电脑免费三个月已经缩短为1个月&#xff0c;大家不要再找3个月的无影云电脑&#xff0c;已经没有了&#xff0c;目前最新消息是1个月。以前可以领3个月&#xff0c;现在只能领1个月&#xff0c;在阿里云免费中心 https://free.aliyun.com/ 大家自己看吧&…

实验室自用LabVIEW软件与商用软件价格差异分析

实验室自用LabVIEW软件与商用软件在价格上的差异源于功能与扩展包、技术支持与服务、使用场景与合规性、更新与维护、市场与定价策略、培训与教育资源及许可证管理与合规审计等方面的不同。商用软件提供更全面的功能和支持&#xff0c;确保高可靠性和合规性&#xff0c;因此价格…

Golang的Gin框架

目录 功能以及简单使用 gin.Engine数据结构 RouterGroup methodTrees gin.context 功能以及简单使用 功能: • 支持中间件操作&#xff08; handlersChain 机制 &#xff09; • 更方便的使用&#xff08; gin.Context &#xff09; • 更强大的路由解析能力&#xff08…

系统状态检测命令

1.ifconfig用于获取网卡配置与网络状态等信息 [rootlinuxprobe Desktop]# ifconfig eno16780032: flags4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 00:0c:29:90:17:bb txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 fra…

2024年了,C++还值得学吗?6个C++的就业方向打消你的疑虑

C语言是一种广泛应用于计算机编程的高级编程语言&#xff0c;自从其首次问世以来&#xff0c;就在软件开发领域取得了广泛的应用和成功。作为一种强大的编程语言&#xff0c;C语言不断发展和改进&#xff0c;也在不断地适应新的技术和需求。在未来几年&#xff0c;C语言将继续保…