整数分划c语言,C-整数划分
将正整数n表示成一系列正整数之和,n=n1+n2+…+nk,其中n1>=n2>=…>=nk>=1,k>=1。正整数n的这种表示称为正整数n的划分。正整数n的不同的划分个数称为正整数n的划分数,记作p(n)。例如正整数6有如下11种不同的划分,所以p(6)=11。6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1.
在正整数 n 所有不同的划分中,将最大加数 n1 不大于 m 的划分个数记作 q(n,m) ,称它为属于 n 的一个 m 划分。根据 n 和 m 的关系,考虑以下几种情况:
(1)当 n=1 时,不论 m 的值为多少( m>0) ,只有一种划分即 {1};例如上述p(1,1) = 1.全部由1组成。
(2) 当 m=1 时,不论 n 的值为多少,只有一种划分即 n 个 1 ; p(6,1)= {1,1,1,...,1} = 1;
(3) 当 n=m 时,根据划分中是否包含 n ,可以分为两种情况:
(a). 划分中包含 n 的情况,只有一个即 {n} ;
(b).划分中不包含 n 的情况,这时划分中最大的数字也一定比 n 小,即 n 的所有 (n-1) 划分。
也就是说,q(n,n)代表最大的加数不大于n;
q(n,n-1) 代表最大加数不大于n-1;
1 代表 最大加数为n
因此 q(n,n) =1 + q(n,n-1);
(4) 当 nn>1);
(5) 但 n>m 时,根据划分中是否包含最大值 m ,可以分为两种情况:
❤(a). 划分中包含 m 的情况,即 {m, {x1,x2,...xi}}, 其中 {x1,x2,... xi} 的和为 n-m ,可能再次出现 m ,因此是( n-m )的 m 划分,因此这种划分个数为 q(n-m, m);包括m的总数就是{x1,x2,... xi} 最大加数不大于m的总数(现在已经有一个m了,从剩下的{x1,x2,... xi}找到不大于m的总数就行)。
(b). 划分中不包含 m 的情况,则划分中所有值都比 m 小,即 n 的 (m-1) 划分,也就是最大数不大于m-1的个数,个数为 q(n,m-1);
因此 q(n, m) = q(n-m, m)+q(n,m-1);
p(n,m) = { 1, m= 1;
| p(n,n) m>n;
| 1+p(n,m-1) n=m;
{ p(n,m-1) +p(n-m,m); n>m>1
int p(int n,int m)
{
if(m=1) return 1;
if(m>n) return p(n,n);
if(m==n) return p(n,m-1)+1;
return p(n,m-1)+p(n-m,m);
}
整数分划c语言,C-整数划分相关推荐
- c语言怎么进行大整数加法,c语言 大整数加法
2013-12-07 回答 以前我也做过一个大整数程序,2000!,不过那里面没有减法.做这个减法真让花时间啊. #include #include #include #define max 4000 ...
- 整数因子分解c语言递归,整数因子分解:计算一个整数所有的分解式(递归实现)...
原始问题描述: 对于给定的正整数n,计算n有多少种不同的分解式. 例如,当n=12时,有8种不同的分解式: 12=12, 12=6×2, 12=4×3, 12=3×4, 12=3×2×2, 12=2× ...
- 分治法大整数乘法c语言,大整数乘法(分治法)
#include #include using namespace std; int num(int u) //计算乘数的位数 { int i,num; i=1; num=u/10; while(nu ...
- python中不属于整数类型_哪个选项不是Python语言的整数类型?
[单选题]下面不属于Python保留字的是: [单选题]关于Python的元组类型,以下选项错误的是: [单选题]关于整数类型的4种进制表示,哪个选项的描述是正确的? [简答题]阅读以下冒泡法排序代码 ...
- c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为八进制字符串(char [])...
c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into octal string (char[]) in ...
- c语言判断整数_用c++编写闰年的判断基础程序
其实c++语言与c语言有太多共同的东西,学习过c语言再学习c++语言就显得轻而易举.当然学过了c++再去学习c语言也是有一些帮助的(但是个人不提倡先学习c++在学c语言).由于现在经常看见有关闰年的程 ...
- c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为十六进制字符串(char [])...
c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into Hexadecimal string (char ...
- 整数的分类处理c语言switch,整数的分类处理
整数的分类处理 (C语言) 给定 N 个正整数,要求你从中得到下列三种计算结果: A1 = 能被 3 整除的最大整数 A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数 A3 = 存在整数 ...
- C语言 大整数运算(加、减、乘)
题目:大整数计算 背景介绍: 大整数一般指超过十尾的十进制整数,假定不超过五十位.这类大整数在C语言系统中因超界溢出而不能直接表达或计算. 实现方法: 以字符串形式输入.输出和存放大整数,计算时可以将 ...
最新文章
- POJ-1860-Currency Exchange
- gantt markdown
- MariaDB Galera 集群安装配置
- mui ajax ab,mui.ajax中文乱码
- 2.let和const命令
- mysql 基于时间分区_MySQL基于时间字段进行分区的方案总结
- js获取数组最大值的索引_数组中最大值的返回索引
- html属性是dom属性吗,HTML DOM 属性 对象
- java方法_Java方法
- Mac上使用SecureCRT
- 引用echar显示图形
- raspios-bullseye-arm64 系统 BUG
- 点击计算机直接隐藏到任务栏,win7电脑的任务栏被自动隐藏了怎么办?
- [kubernetes] Endpoint 和 Service介绍与应用
- 为什么硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录shen1: 设备上没有空间
- 【菜鸟窝】人工智能就业与面试指南
- Spring Cloud Alibaba-SkyWalking链路追踪
- GLU-Net代码的理解
- nsd engineer
- mall学习01-整合mybatis
热门文章
- 联想黑将S5 HINKPAD-S5-Clover5126-Mojave10.14.6 完美驱动
- android 9.0谷歌商店,Android 10现可选择Play商店主题模式 附Android 9强制开启深色模式教程...
- java 数据结构 无向图_Java数据结构和算法(十五)——无权无向图
- 【转】huhamhire-hosts自动更新Google Hosts文件教程
- pyqt5 qstring在哪个库_从Qt C++类库到PyQt5
- 硬币排成线-LintCode
- plsql解锁oracle用户
- 转-IE浏览器自动配置代理脚本-Proxy.PAC文件及PAC相关语法
- Java用i74G的显卡_【省钱日记】第5期,二手RX560 4G显卡+老i7,实测体验分享
- 网页源代码拿到后怎么使用(手机怎么看网页源代码)