n的m划分

  • 将n划分成若干个不超过m的数(正整数)的和,问有几种划分情况。

现在根据n和m的关系,考虑下面几种情况:

  1. 当n=1时,不论m的值为多少,只有一种划分,即{1};
  2. 当m=1时,不论n的值为多少,只有一种划分,即{1,1,1,....1,1,1}划分成n个1;
  3. 当n==m时,(a)划分中不包含n的情况,即n的n-1的划分f(n,n-1);(b)其他情况就是包含n的划分,只有1个,即{n};
  4. 当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);
  5. 当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划分 整数拆分问题的更多相关文章

  1. HDU 4651 Partition(整数拆分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){    f[0 ...

  2. LightOJ 1336 Sigma Function(数论 整数拆分推论)

    --->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...

  3. LightOJ 1341 Aladdin and the Flying Carpet(整数拆分定理)

    分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ...

  4. HDU1028 (整数拆分)

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

  5. 整数拆分问题_C++

    一.问题背景  整数拆分,指把一个整数分解成若干个整数的和 如 3=2+1=1+1+1  共2种拆分 我们认为2+1与1+2为同一种拆分 二.定义 在整数n的拆分中,最大的拆分数为m,我们记它的方案数 ...

  6. Pollard-Rho大整数拆分模板

    随机拆分,简直机智. 关于过程可以看http://wenku.baidu.com/link?url=JPlP8watmyGVDdjgiLpcytC0lazh4Leg3s53WIx1_Pp_Y6DJTC ...

  7. poj3181【完全背包+整数拆分】

    题意: 给你一个数n,在给你一个数K,问你这个n用1-k的数去组合,有多少种组合方式. 思路: 背包重量就是n: 那么可以看出 1-k就是重物,价值是数值,重量是数值. 每个重物可以无限取,问题转化为 ...

  8. HDU 1028 Ignatius and the Princess III(母函数整数拆分)

    链接:传送门 题意:一个数n有多少种拆分方法 思路:典型母函数在整数拆分上的应用 /********************************************************** ...

  9. LeetCode 343. 整数拆分(Integer Break) 25

    343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ...

随机推荐

  1. python2 with open(path,"",) as f:

    python2 with open 没有 encoding 这个参数 会报错, 可以 import io with io.open(path,"") as f: 这样就ok 或者是 ...

  2. 003.[python学习] 简单抓取豆瓣网电影信息程序

    声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和lxml,如需正确运行,请先安装.下面是代码: #!/us ...

  3. 关于总结一些CentOS7常用的运维命令

    Centos7日常需要用的运维命令 1.删除0字节文件 find-type f -size 0 -exec rm -rf {} \ 2.查看进程 按内存从大到小排列 ps -e   -o " ...

  4. pycharm中运行成功的python代码在jenkin中运行问题总结

    我们在用selenium+python完成了项目的UI自动化后,一般用jekins持续集成工具来定期运行,python程序在pycharm中编辑运行成功,但在jenkins中运行失败的两个问题,整理如 ...

  5. mezzanine的breadcrumb

    page_menu tag为什么能渲染出当前页的面包屑路径??靠的是request的page对象,要是page的自己或是它的的祖先才渲染,是根据page的属性page.is_current_or_as ...

  6. Linux网络编程学习(九) ----- 消息队列(第四章)

    1.System V IPC System V中引入的几种新的进程间通信方式,消息队列,信号量和共享内存,统称为System V IPC,其具体实例在内核中是以对象的形式出现的,称为IPC 对象,每个 ...

  7. 吴裕雄 python 机器学习——ElasticNet回归

    import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...

  8. form表单的三个属性 action 、mothod 、 enctype。

    form_action: 表单数据提交到此页面 下面的表单拥有两个输入字段以及一个提交按钮,当提交表单时,表单数据会提交到名为 "form_action.asp" 的页面: < ...

  9. []、()、None的区别

    def product(*numbers): if numbers == (): raise TypeError for x in numbers: if not isinstance (x, (in ...

  10. Game Engine Architecture 2

    [Game Engine Architecture 2] 1.endian swap 函数 floating-point endian-swapping:将浮点指针reinterpert_cast 成 ...