n的m划分 整数拆分问题
n的m划分
- 将n划分成若干个不超过m的数(正整数)的和,问有几种划分情况。
现在根据n和m的关系,考虑下面几种情况:
- 当n=1时,不论m的值为多少,只有一种划分,即{1};
- 当m=1时,不论n的值为多少,只有一种划分,即{1,1,1,....1,1,1}划分成n个1;
- 当n==m时,(a)划分中不包含n的情况,即n的n-1的划分f(n,n-1);(b)其他情况就是包含n的划分,只有1个,即{n};
- 当n>=m时,(a)划分中不包含m的情况,即n的n-1划分f(n,m-1);(b)其他情况就是包含m的划分,即{x1,x2,x3,x4,...,xi,m},也就是n-m的m划分f(n-m,m);
- 当n<m时,因为划分不会出现负数,因此也就是n的n划分。
综上的递推表达式为:

for(int i=; i<=n; i++)
{
for(int j=; j<=i; j++)
{
if(i==||j==) dp[i][j]=;
else
{
if(j==i) dp[i][j]=dp[i][j-]+;
else if((i-j)<j)
dp[i][j]=dp[i-j][i-j]+dp[i][j-];
else
dp[i][j]=dp[i-j][j]+dp[i][j-];
}
}
}
- 将n划分成不超过m个数(正整数)的和,问有几种情况。
dp[i][j]表示j的i划分。

考虑n的m划分,如果对于每一个i都有xi>0,那么{xi-1}就对应了n-m的m划分。另外如果存在xi=0,那么就对应了n的m-1划分。
综上所述,对推关系:
dp[i][j]=dp[i][j-i]+dp[i-1][j]
dp[][]=;
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
if((j-i)>=) dp[i][j]=(dp[i-][j]+dp[i][j-i])%mod;
else dp[i][j]=dp[i-][j];
}
}
n的m划分 整数拆分问题的更多相关文章
- HDU 4651 Partition(整数拆分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){ f[0 ...
- LightOJ 1336 Sigma Function(数论 整数拆分推论)
--->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...
- LightOJ 1341 Aladdin and the Flying Carpet(整数拆分定理)
分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ...
- HDU1028 (整数拆分)
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- 整数拆分问题_C++
一.问题背景 整数拆分,指把一个整数分解成若干个整数的和 如 3=2+1=1+1+1 共2种拆分 我们认为2+1与1+2为同一种拆分 二.定义 在整数n的拆分中,最大的拆分数为m,我们记它的方案数 ...
- Pollard-Rho大整数拆分模板
随机拆分,简直机智. 关于过程可以看http://wenku.baidu.com/link?url=JPlP8watmyGVDdjgiLpcytC0lazh4Leg3s53WIx1_Pp_Y6DJTC ...
- poj3181【完全背包+整数拆分】
题意: 给你一个数n,在给你一个数K,问你这个n用1-k的数去组合,有多少种组合方式. 思路: 背包重量就是n: 那么可以看出 1-k就是重物,价值是数值,重量是数值. 每个重物可以无限取,问题转化为 ...
- HDU 1028 Ignatius and the Princess III(母函数整数拆分)
链接:传送门 题意:一个数n有多少种拆分方法 思路:典型母函数在整数拆分上的应用 /********************************************************** ...
- LeetCode 343. 整数拆分(Integer Break) 25
343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ...
随机推荐
- 003.[python学习] 简单抓取豆瓣网电影信息程序
声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和lxml,如需正确运行,请先安装.下面是代码: #!/us ...
- lambda函数式编程
一.接口注解(@FunctionalInterface) @FunctionalInterface interface Interface1 { public void print(); } publ ...
- User authentication in Django(用户认证)
一,概述: auth 系统包括: 1)Users 2)Permissions: Binary (yes/no) flags designating whether a user may perform ...
- python+requests库,接口自动化
1.requests库的使用 requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: “ ...
- springmvc+mybatis环境搭建
1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...
- SSM商城项目(十二)
1. 学习计划 1.购物车实现 2.未登录状态下使用购物车 3.登录状态下使用购物车 2. 购物车的实现 2.1. 功能分析 1.购物车是一个独立的表现层工程. 2.添加购物车不要求登录.可以 ...
- JS实现将数字金额转换为大写人民币汉字
function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', ...
- C++/CLI
[C++/CLI] A C++/CLI application or component uses extensions to C++ syntax (as allowed by the C++ Sp ...
- Windows下phpstudy配置tp5的nginx时遇到的奇葩问题
nginx原来的配置: hosts已经配置好127.0.0.1 到tpdev1.net这个域名 最后结果 No input file specified. 解决方法: 找到原因了,竟然是root的分隔 ...
- ucore-lab1-练习6report
练习6--完善中断初始化和处理 1. 中断向量表中一个表项占多少个字节?其中哪几位代表中断处理代码的入口? 答:系统将所有的中断事件统一进行编号(0-255),这个编号称为中断向量.中断向量表的一个 ...