算法训练 数的划分

蓝桥杯 - 算法训练 数的划分 C语言实现 算法训练 数的划分 题目: 问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5 阅读详情

问题描述

将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
  例如:n=7,k=3,下面三种分法被认为是相同的。
  1,1,5; 1,5,1; 5,1,1;
  问有多少种不同的分法。

输入格式

n,k

输出格式

一个整数,即不同的分法

样例输入

7 3

样例输出

4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}

数据规模和约定

6<n<=200,2<=k<=6

思路

首先这道题是一个跟组合数学有关的题目,我们把它转化成如下问题:

有n个小球放到k个盒子里,各个盒子无差别,每个盒子里必须要有小球,共有几种放法?

这里细分成三种情况 :
第一,n>k,有多种情况;
第二,n==k,此时只能有一种划分方式;
第三,n<k,此时划分的可能性为0 ;

此时我们需要找状态转移方程,与之前的简单dp直接把大问题转化成小问题不同,本题要把大问题分成两部分,分别转化为小问题。这时我们需要讨论在此时的放法中是否存在某一个盒子只有一个小球的情况:
1.若存在,则该盒子和该小球并不影响放法的种数,于是dp[i-1][j-1]种可能性

2.若不存在,则每个盒子中都至少有两个小球,在这种情况下,我们从每个盒子中都拿走一个小球,也不影响放法的种数。于是dp[i-j][j]种可能性

结合起来就是大问题放法的种数,可得状态转移方程dp[i][j]=dp[i-1][j-1]+dp[i-j][j];

代码

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
long long m[201][7];
//动态规划
//m[i][j]表示把数字i划分成j份一共有多少种可能性
//存在递推方程
//如果存在一份中为1,那么减去1可以划分的可能性是m[i-1][j-1]
//如果不存在一份为1
//也即是所有份中都大于1,那么把每一份减去一个1再进行划分成j份
//可能性是m[i-j*1][j];
int main()
{
    int n;//n表示要划分的整数,k表示划分的份数
    int k;
    cin>>n>>k;
    for(int j=2;j<=k;j++){
        //把1划分成j>1种可能性为0;
        m[1][j]=0;
    }
    for(int i=1;i<=n;i++)
        m[i][1]=1;//把数字i划分成1份只有一种可能性
    for(int i=1;i<=n;i++)
        m[i][2]=i/2;//把数字i划分成2份有i/2种可能性
    //对m[i][j]进行动态规划
    for(int i=3;i<=n;i++)
    for(int j=2;j<=k;j++){
        if(i>j)//如果i>j,存在下列递推关系
            m[i][j]=m[i-1][j-1]+m[i-j][j];
        if(i==j)//i==j,把数字j划分成j份,1111...1,只有一种可能性
            m[i][j]=1;
        if(i<j)//i<j,可能性为0
            m[i][j]=0;
    }
    //输出将数字n划分成k份的可能性数目
    cout<<m[n][k];
	return 0;
}
项目过程记录:ADS-B信号接收并显示(Ubuntu20.04+ANTSDR E310V2) 最近被安排做一个ADS-B信号接收的项目,拿到软件无线电模块(ANTSDR E310V2)后安装环境和软件真的太折磨了。。在此记录以下我走过的弯路,大家可以参考一下。 阅读详情

相关推荐

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1492

<蓝桥杯>算法训练: 数的划分

问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;} 思路:* 设 f(n,m) 为整数 n 拆分成 m 个数字的方案数. 那么对于每一个情况一定可以分为以下两种情况,且不重不漏。 1.不选

zesong2019的博客 1319

阿里云学生机2核4G,30分钟搞定DNF台服联机(CentOS 7.6保姆级教程)

本文提供阿里云学生机2核4G搭建DNF台服联机的详细教程,涵盖服务器选购、网络配置、服务端部署及客户端联机设置。通过CentOS 7.6系统优化和端口配置,30分钟内即可完成搭建,适合学生和技术爱好者低成本实现游戏联机体验。

weixin_42537919的博客 359

算法训练 数的划分 蓝桥杯

目录 算法训练 数的划分   问题描述 思路 代码实现   算法训练 数的划分   时间限制:1.0s   内存限制:256.0MB     问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k ...

weixin_43838002的博客 782

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

containerd镜像加速配置全解析:从host.toml到config.toml的演进与实践

本文全面解析了containerd镜像加速的配置方法,重点对比了传统的config.toml集中式配置与现代的host.toml模块化配置的演进与优劣。文章通过实战演示,详细指导如何为docker.io、registry.k8s.io等常见仓库配置host.toml加速,并提供了生产环境下的最佳实践、故障排查与性能优化建议,帮助用户显著提升镜像拉取效率与系统稳定性。

jenkins8butler的博客 698

数的划分

问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;} 数据规模   6 < n < =200,2<=k<=6 解题思路: 关键在于将此题转化为,有数a,分成b份,每份任意多

m0_51955470的博客 731

CVPR2021 CenterPoint源码解读:从VoxelNet到两阶段优化的完整实现细节

本文深度解析了CVPR 2021 CenterPoint模型的完整实现细节,从VoxelNet体素化、稀疏卷积Backbone,到基于中心点的检测头与两阶段精修机制。文章提供了从环境搭建、数据预处理到核心代码模块(如热力图生成、关键点特征提取与MLP Refiner)的实战指南,并分享了训练策略、多任务损失调优及可视化调试等关键工程实践,助力开发者深入理解并复现这一高效的3D目标检测框架。

linux的博客 470

蓝桥杯 算法训练 数的划分

问题描述  将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。  例如:n=7,k=3,下面三种分法被认为是相同的。  1,1,5; 1,5,1; 5,1,1;  问有多少种不同的分法。输入格式  n,k输出格式  一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}数据规模和约定  6&lt;n&...

langzitan123的博客 984

SurfaceControlViewHost使用介绍

可以看到,主要用途:是把一个进程的View显示到另外一个进程里面。

chadm.xiang 1285

HTML流光爱心(完整代码)

HTML语言实现红蓝色流光爱心效果的完整代码。

AIGC 1万+

[蓝桥杯][算法训练][vip] 数的划分(迭代搜索)

蓝桥杯 ALGO-22 算法训练 数的划分 问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4;1,3,3;2...

cp0328的博客 3453

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

weixin_44119674的博客 440

算法训练之数的划分

1148: 算法训练 数的划分 时间限制:1 Sec内存限制:256 MB 提交:1解决:1 [提交][状态][讨论版] 题目描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入 n,k...

dengjing1200的博客 234

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

试题 算法训练 数的划分

资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1;问有多少种不同的分法。输入格式n,k输出格式一个整数,即不同的分法样例输入7 3样例输出数据规模和约定。

MWH20030811的博客 282

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

算法训练 数的划分 (巨详解)

这道题给的提示是DP问题 读题问题:分成k份 每份不能为0!!!我就错这里了。 X 1 2 3 4 数字:1 1 0 0 0 数字:2 1 1 0 0 数字:3 1 1 1 0 数字:4 1 2 1 1 数字:5 1 2 2 1 数字:6 1 3 3 2 横轴分几块,竖轴要分的数字,中间种类 代码: #include <iostream> usi...

zhimeng_LQ的博客 524

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法训练 数的划分 蓝桥杯

算法训练 数的划分 时间限制:1.0s 内存限制:256.0MB 问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输...

游戏开发、游戏引擎开发、逆向破解爱好者 524

蓝桥杯 算法训练 数的划分Python实现(动态规划)

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4...

bianxia123456的博客 1275
上一篇: 算法训练 装箱问题
下一篇: 减绳子问题动态规划求解
practical_sharp
博客等级 码龄8年 499粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值