HDU1028整数划分

HDU_1028题解(DP) 我的博客链接 https://startcraft.cn 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题目大意 给你一个数字N,问将N分解成若干个数字的和有几种方法,每个数字都是正数且不超过N 如: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; 思路1: 考... 阅读详情

 

题目描述

整数划分是一个经典的问题。请写一个程序,完成以下要求。

 

 

输入

每组输入是两个整数n和k。(1 <= n <= 50, 1 <= k <= n)

输出

对于输入的 n,k;

第一行: 将n划分成若干正整数之和的划分数。

第二行: 将n划分成k个正整数之和的划分数。

第三行: 将n划分成最大数不超过k的划分数。

第四行: 将n划分成若干个 奇正整数之和的划分数。

第五行: 将n划分成若干不同整数之和的划分数。 第六行: 打印一个空行

样例输入

5 2

样例输出

7
2
3
3
3

提示

样例输出提示:

1.将5划分成若干正整数之和的划分为: 5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1

2.将5划分成2个正整数之和的划分为: 3+2, 4+1

3.将5划分成最大数不超过2的划分为: 1+1+1+1+1, 1+1+1+2, 1+2+2

4.将5划分成若干 奇正整数之和的划分为: 5, 1+1+3, 1+1+1+1+1

5.将5划分成若干不同整数之和的划分为: 5, 1+4, 2+3

 

动态规划:

设dp[i][j]为将i划分为不大于j的划分数

  (1) 当i<j 时,i不能划分为大于i的数,所以dp[i][j]=dp[i][i];

  (2) 当i>j 时,可以根据划分中是否含有j分为两种情况。若划分中含有j,划分方案数为dp[i-j][j];若划分数中不含j,相当于将i划分为不大于j-1的划分数,为dp[i][j-1]。所以当i>j时dp[i][j]=dp[i-j][j]+dp[i][j-1];

  (3) 当i=j 时,若划分中含有j只有一种情况,若划分中不含j相当于将i划分为不大于j-1的划分数。此时dp[i][j]=1+dp[i][j-1]。
 

AC代码:

#include<iostream>
using namespace std;
int dp[200][200];
int main()
{
    int n;
    for (int i = 1; i <= 120; i++)
    {
        for (int j = 1; j <= 120; j++)
        {
            if (j > i)dp[i][j] = dp[i][i];
            else if (i == j)dp[i][j] = 1 + dp[i][j - 1];
            else dp[i][j] = dp[i - j][j] + dp[i][j - 1];
        }
    }
    while (cin >> n)
    {
        cout << dp[n][n] << endl;
    }
    return 0;
}

DMA学习笔记 DMA(direct memory access,直接内存访问),是一种避开CPU,可以直接对外设和内存进行访问的技术,可以实现外设与内存、内存之间、外设之间的数据的访问和搬移。 阅读详情

相关推荐

Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结

本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。

weixin_26749245的博客 271

整数划分

整数划分 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。 Input 输入1个数N(1 &lt;= N &lt;= 50000)。 Output 输出划分的数量Mod 10^9 + 7。 Sample Input 6 Sample Output ...

zhengde152的博客 527

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1673

HDU-1028题解

一千个人,就有一千个状态转移方程 方法一: 当成完全背包问题进行求解 f[i][j]=f[i-1][j]+f[i-1][j-i]+f[i-1][j-2*i]+............. f[i][j-i]= f[i-1][j-i]+f[i-1][j-2*i]+............... 推出状态转移方程 f[i][j]=f[i-1][j]+f[i][j-i] 然后像完全背包一样转化为一维 f[j]=f[j]+f[j-i] ac代码 #include <bits/stdc++.h&g

qq_53904604的博客 357

具身智能:从理论突破到场景落地的全解析

具身智能(Embodied Intelligence)是人工智能与机器人学深度融合的前沿领域,其核心在于通过物理实体与环境的动态交互实现智能行为。区别于传统 AI 的 “离身性”(如语音助手仅依赖数据输入),具身智能强调 “智能体通过身体感知世界并反作用于环境”,形成 “感知 - 决策 - 行动” 的闭环。例如,能自主避障的配送机器人、可精准抓取异形物体的机械臂,均通过传感器网络与环境实时互动,在试错中优化行为策略。

LeeKumaの技术Note 2681

卷积码和Turbo码

通信原理相关博文目录:目录我们常在移动通信中遇到的卷积码就是一种非分组码,卷积码和信号处理中的卷积运算有关系吗?是不是就是信号处理中的卷积运算,先看看编码器的编码原理再说:下面是一个比较实用的卷积码编码器:它有三个移位寄存器D0,D1,D2和三个模2加法器,以及一个旋转开关组成,编码前,先将各级移位寄存器清零:现在假设输入的信息码元是1101:当输入的第一个码元为1时,三个模2加法器计算的结果都为...

Reborn Lee 2万+

HDU 1028 整数的划分(动态规划)

这道题就是整数的划分,其实定义好了状态,就是简单的动态规划的递推。 我们定义dp[n][k]表示将n进行划分,最大的数不超过k的方案有多少种,那么我们可以得到如下的递推方案: dp[n][k] = dp[n][k-1] + dp[n-k][k]; 其中的dp[n][k-1]便是将n进行进行整数的划分,最大的数不超过k-1的方案数;dp[n-k][k]表示拿出一个k后,剩下的数被不超过k的数的

Bright 2420

ZED双目相机环境配置

ZED SDK 安装文件夹中有一个 Python 脚本(get_python_api.py),可以自动检测操作系统、CUDA 和 Python 版本并下载相应的预编译 Python API 包(pyzed)。安装SDK成功后,我们进入ZED SDK文件夹中的tools子文件夹,运行ZED Explorer.exe 以及 ZED Depth Viewer.exe,查看ZED相机是否能正常启用工作。在本例中,我们简单地检索ZED相机的序列号:打开 ZED相机,然后打印其序列号,然后关闭相机。

qq_53545309的博客 2138

hdu1028(递归)&杭电oj_1028

题目大意及分析: 求分解整数n的个数q(n) 例: 5 = 5; 5 = 4 + 1; 5 = 3 + 1 + 1; 5 = 3 + 2; 5 = 2 + 2 + 1; 5 = 2 + 1 + 1 + 1; 5 = 1 + 1 + 1 + 1 + 1; sum(5) = 7;不区分顺序,即(3+2)与(2+3)为同一个。此题需要递归求解,但考虑到时间问题,可根据递归式转存到

机器笨猫 1930

ros_gz_bridge__镜像__readme

Run。

1113

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

Hdu 1028 Ignatius and the Princess III//整数划分(一)

直接代码吧: /*Hdu 1028 Ignatius and the Princess III 整数划分 */ #include #include using namespace std; const int maxn = 150; int f[maxn][maxn]; int n; int main() { while(cin>>n) { for

mr_zys的专栏 709

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

hdu 1028整数划分

1、母函数 杭州电子科技大学课件 算法就是简单的模拟, (1+x+x^2+x^3+...)(1+x^2…+x^4+x^6+...)(1+x^3…+x^6+x^9+)...(...) =[1*(1+x^2…+x^4+x^6+...)+x*(1+x^2…+x^4+x^6+...)+x^2*(1+x^2…+x^4+x^6+...]*(1+x^3…+x^6+x^9+)...(...) #in

pmt123456的博客 687

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU-1028 整数划分

杭电上的一道基础的母函数的题目 这里介绍用递归加记忆化的方式完成 ** 这里首先定义 { “\f”: “f(#1)” }**

BASTD的博客 268

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hdu1028 整数划分

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21096    Accepted Submission(s): 14720 Problem Descrip

功不成身已退的博客 389

HDU 1028 Ignatius and the Princess III

HDU

loser 289

hdu 1028 & hdu 1398 —— 整数划分(生成函数)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1028 整数划分,每个数可以用无限次; 所以构造 f(x) = (1+x+x2+x3+...)(1+x2+x4+...)(1+x3+x6+...)...(1+xn) 乘起来后的 xn 的系数就是方案数; 用两个数组做即可,从第一个括号开始一个一个乘,f[i] 表示此时 xi 项的系数,后面...

aodan5477的博客 362

HDU 1028 整数分化

HDU 1028 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意: 整数划分 思路: 设状态dp[i][j]表示数字为i,最大的组成数字为j的dp值。 然后用记忆化搜索的方法写就可以。 源码:#include <cstdio> #include <cmath> #include <cstring> #include <c

beihai2013 613

hdu 1028 Ignatius and the Princess III 【整数划分】

Ignatius and the Princess III                                                                                       Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other

Fighting! 1643

hdu 1028 整数划分

Ignatius and the Princess III                      Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)                      Total Submission(s): 9937 Accepted Submission

小磊's blog 751

HDU1028 Ignatius and the Princess III【整数划分+记忆化递归】

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26672 Accepted Submission(s): 18371 Problem Description “Well,...

海岛Blog 1198

最简单的整数划分问题 HDU 1028

Ignatius and the Princess IIITime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24456    Accepted Submission(s): 16986Problem Description"Well, it ...

wwxy1995的博客 460

HDU 1028 整数划分 母函数

这是一道整数划分的题目,用到的算法思想是母函数,当然还有其他的比如递推,DP可以用来解决这道题,关于母函数的思想可以参考http://www.wutianqi.com/?p=596 /** Author:lonelycatcher* problem:hdu 1028* Type: 母函数,拆分数,整数划分*/#include<stdio.h>#include<string.h&...

weixin_30768175的博客 157

hdu1028 Ignatius and the Princess III(DP整数划分)

题意:给定一个整数,将其写成若干个整数的和,求有多少种情况。 可以直接考虑各个加数递减的情况,避免重复。依旧是DP的思想。 将整数n划分成两个整数之和,n+0,(n-1)+1,(n-2)+2,……,(n-n/2)+(n/2)。再将加号前面的加数继续如此划分,注意:继续划分时,后一个加数至少为上一级的后一个加数,以确保加数列的递减性。用a[n][1]表示将n表示成(n-1)+1的情况数,则可知a

Willona_C的博客 541

整数划分问题--递归求解 例题:HDU 1028

本文章由本人独自编写,如果有任何错误的地方,欢迎指正,谢谢  题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1028     整数划分问题,如果设 p(n) 为整数 n 的划分数,则难以找到递归关系,因此可以考虑增加一个自变量:将 ”最大加数 k 不大于 m “ 的划分个数 记为 q(n,m) 。可以建立 q(n,m) 的如下递归关系:

GoGina的博客 521

HDU 1028 整数划分

这里不能简单的递归,因为N较大,会出现超时。。。 开始没注意N的大小,提交之和TLE #include   #include   int main()  {      int n;      int dp[130][130];      int i,l;            memset(dp,0,sizeof(dp));      dp[1][1]=1;

恋&空的专栏 508
上一篇: 各类整数划分之动态规划
下一篇: HDU1039(字符串水题)
weirdo_coder
博客等级 码龄9年 17粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值