整数划分问题
程序员文章站
2022-05-08 19:05:07
...
将一个整数划分为多个整数想加的形式,并计算划分方法。
例:6的划分:
6=5+1
6=4+2
6=4+1+1
6=3+3
6=3+2+1
6=3+1+1+1
6=2+2+2
6=2+2+1+1
6=2+1+1+1+1
6=1+1+1+1+1+1
问题分析
这个问题显然要构造递归关系来解决,碰到这个问题时,我们很容易知道当一个整数被分为都是1时,这时应该已经完成了整个递归的过程。如果你已经发现了这一出口,那我们就开始对划分的方式进行分类。
笔者这里分为两类:
第一类 | 第二类 |
---|---|
6=5+1 | 6=3+3 |
6=4+2 | 6=2+2+2 |
6=4+1+1 | |
6=3+2+1 | |
6=3+1+1+1 | |
6=2+2+1+1 | |
6=2+1+1+1+1 | |
6=1+1+1+1+1+1 |
我这里就简单的使用是否含有1作为界限,当然也可以使用别的界限,只不过递归的形式就不同了。给定一个整数N,M是N中不超过N的最大整数。
第一类就可以写成F(N,M-1),第二类写成F(N-M,M),即递归表达式
F(N,M)=F(N,M-1)+F(N-M,M)
public static int divInt(int n,int m){
if (m == 1) return 1;
if (n <= m) return 1 + divInt(n, n - 1);
if (m > 1) return divInt(n, m - 1) + divInt(n - m, m);
return 0;
}
转载于:https://www.jianshu.com/p/a0203ce4f362
上一篇: 落枕了什么方法最有效 中医可用按摩理筋
下一篇: 整数划分问题
推荐阅读
-
代码详解ios键盘收起问题
-
解决ios微信下vue项目组件切换并自动播放音频问题
-
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
-
mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
-
Python代码解决RenderView窗口not found问题
-
完美解决关于禁止ViewPager预加载的相关问题
-
针对PHP开发安全问题的相关总结
-
iOS10 App适配权限 Push Notifications 字体Frame 遇到的问题
-
iOS10适配之权限Crash问题的完美解决方案
-
Mysql彻底解决中文乱码问题的方案(Illegal mix of collations for operation)