社区
数据结构与算法
帖子详情
算法题目:完备划分
gushaoping
2003-12-09 06:14:05
一个正整数如果能拆分成若干个正整数之和,即N=a1+a2+a3+....+ak且正整数1,2,...,N均可以唯一地表示成这个拆分中某些拆分项这和,那么N的这个拆分称为N的一个完备剖分.例如7=4+1+2,1=1,2=2,3=1+2,4=4,5=4+1,6=4+2
于是可知7=4+2+1是7的一个完备剖分.
设计一个算法,枚举出正整数N的所有完备剖分,并统计完备剖分总数.
...全文
91
12
打赏
收藏
算法题目:完备划分
一个正整数如果能拆分成若干个正整数之和,即N=a1+a2+a3+....+ak且正整数1,2,...,N均可以唯一地表示成这个拆分中某些拆分项这和,那么N的这个拆分称为N的一个完备剖分.例如7=4+1+2,1=1,2=2,3=1+2,4=4,5=4+1,6=4+2 于是可知7=4+2+1是7的一个完备剖分. 设计一个算法,枚举出正整数N的所有完备剖分,并统计完备剖分总数.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gushaoping
2003-12-17
打赏
举报
回复
各位都是数学高手,真是今我汗颜,如果没有其它意见,我就照这个结论做了,
那程序将会很短,显然题目出得有点问题.
zzwu
2003-12-12
打赏
举报
回复
对!也就是说:
1。任何自然数都可以用2进制唯一表示,且
2。只有2^k-1这种数能唯一拆分成1+2+4+...这样的项。
mathe
2003-12-12
打赏
举报
回复
不对
6=1+2+3
那么3有两种剖分
3=3
3=1+2
证明很简单
使用唯一剖分,用归纳法证明
1,2,4,...分别出现,
1=1唯一可能
2=2, (不能1+1,不然两个1,1的剖分不唯一)
3=1+2,所以3不能出现,不然3有两个剖分。
4=4,必然有4,
5=1+4,所以不能有5,不然有两种剖分。
...
liem
2003-12-12
打赏
举报
回复
n=2^k-1肯定有完备剖分,
n=1+2+4+...+2^(k-1)是个完备剖分。(用数的二进制表示就可证明)。
但不是只有这种情况才有完备剖分。如6=1+2+3,这是一个完备剖分。
BlueSky2008
2003-12-12
打赏
举报
回复
sorry,没看到唯一性这个条件。mathe是正确的。我刚才也写了个证明,如下:
设N 的完美划分表示成 a + [S],a是完备划分中最大的一个数,S是其它数的集合。
[S]表示S中所有元素的和。
则S 必可表示0~a-1 的所有数,[S]>= a-1 .
再证明S 恰是a-1 的完备划分。
假设[S] = [A] + [T], ([A] = a-1) 现在要证明T是空集。
假设T不是空集,t∈T,
则取A集合所有元素和t构成一个数:[A] + t = (a-1) + t = a + (t-1)
若 t = 1,则[S] 可以表示 a
若 t > 1,又t<a,所以(t-1)这个数必可以用S中的元素表示。
这样(a+t-1)这个数就总有两种表示,矛盾。
综上:N 的完备划分必可表示成 a + (a-1)的完备划分。
由于1是完备划分,这样可推出有完备划分的数是1,3,7,15...2^n-1,完备划分就是所有小于N的2的幂。
mathe
2003-12-11
打赏
举报
回复
很简单,只有n=2^k-1这种情况才有完备剖分,而且只有唯一的剖分。
gushaoping
2003-12-11
打赏
举报
回复
听大家一分析,题目似乎很复杂,事先不知道问题有没有解,
找出一组剖分是个递归回溯的问题,有一组剖分后判断是不是完备的又是一个典型的0,1背包递
归回溯问题,目前可能只有这种方法.
按BlueSky2008(懒惰是程序员的美德)的思想用递归的方法做下去,遇到了问题,终止条件
不好给,BlueSky2008是不是隐含着在拆分的过程中有剪枝条件呢?往大家花点时间帮我出点主
意
amdcwf
2003-12-11
打赏
举报
回复
请楼上给出数学证明
amdcwf
2003-12-10
打赏
举报
回复
在做这个算法之前
我们先来看看存在性问题,即如何知道一个整数能否完备划分?
如果需要穷举后,才能知道,那么这个问题就很是个复杂问题了
因为,这类问题的复杂度都很高,就比如将1块钱用1分,2分,5分来拆分
且要求每种硬币至少出现一次,那么在最坏情况下问题的求解空间为
100*50*20,也就是说这类问题的求解空间复杂度是N1*N2*N3...Nn
而对于这道硬币问题,则是100*50*20,显然这道硬币问题的问题规模很小
//
niejx
2003-12-10
打赏
举报
回复
值得怀疑这是不是一个NP问题
gushaoping
2003-12-10
打赏
举报
回复
是不是 a<=(N+1)/2 ?
比如7最大剖分因子可达4,然后看(7-4)的所有剖分.依此可得一组解4 2 1
如果最达只可达 N/2(即3)则得不到解.当然这里目的是确保后面的数一定要小于前面的数而且
不重复.如 24可从12尝试起,后面的数都比12小,但我不敢肯定解没有重复的.
BlueSky2008
2003-12-09
打赏
举报
回复
就是将N 拆成 a + (N-a)的完备剖分(a <= N/2)。
《
算法
分析与设计》期末试题及参考答案.docx
。
算法
练习题训练
算法
练习题训练
基础
算法
枚举贪心分治策略PPT学习教案.pptx
基础
算法
枚举贪心分治策略PPT学习教案.pptx
软件设计师经典
题目
解析......精心搜集
软件设计师中,各类疑难问题,,类似网络的,操作系统的等等,普遍的疑难问题解析
C语言专业课程设计报告范例.doc
C语言专业课程设计报告范例.doc
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章