ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4399|回复: 23

[分享] 整数划分个数及记录

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-8 17:15 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Function q(a, b)
  2. If a = 1 Or b = 1 Then
  3.    q = "1"
  4.    For i = 1 To a - 1
  5.        q = q & "+1"
  6.    Next
  7.    Exit Function
  8. End If

  9. '''''''''''''''''''
  10. If a < b Then
  11.    q = q(a, a)
  12. ElseIf a = b Then
  13.    q = b & "," & q(a, b - 1)
  14. ElseIf a > b Then
  15.    temp = Split(q(a - b, b), ",")
  16.    For i = 0 To UBound(temp)
  17.        q = q & b & "+" & temp(i) & ","
  18.    Next
  19.    q = q & q(a, b - 1)
  20. End If
  21. End Function
复制代码
以上是整数划分中,最简单的一类问题。

整数划分.zip (461.64 KB, 下载次数: 67)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-9 15:08 | 显示全部楼层
这个划分个数后还能做什么?可以判断出划分的组合题是属于哪一类?好像这样能找出各种类型题。能不能列举出从数字(0~9)中取3个数,不重复的组合有多少?并分类分组。如果可以。用这样的组合生成多位数。就可以控制组合类型了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-9 16:06 | 显示全部楼层
举例:n=4时 ,有5个整数划分,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};
注意:4=1+3 和 4=3+1 视为同一个划分。
应用1: 解答一次不定方程 ,求正整数解。

TA的精华主题

TA的得分主题

发表于 2019-5-10 14:28 | 显示全部楼层
zopey 发表于 2019-5-9 16:06
举例:n=4时 ,有5个整数划分,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};注意:4=1+3 和 4=3+1 视为同一个划分。 ...

哦,原来是这么用的!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-18 15:13 | 显示全部楼层
提出 新的问题: 整数160 划分为 40个 不大于7的自然数(即1- 7,可重复)。

如果套用公式 =q(160,7)  ,因为 递归遍历所有解 (很多), 计算速度很慢。
能否 在递归过程中 直接 剪枝掉其他解答,只保留40个 数字 相加的答案呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-19 09:53 | 显示全部楼层
整数N的R划分 ,也就是把N 写成R个自然数的 和。

144.jpg

整数N的R划分.rar (15.9 KB, 下载次数: 25)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-30 15:06 | 显示全部楼层
zopey 发表于 2019-5-18 15:13
提出 新的问题: 整数160 划分为 40个 不大于7的自然数(即1- 7,可重复)。

如果套用公式 =q(160,7)   ...

可以只输出满足1-7中取40个数组合之和=160的解。满足条件的解一共有118765个。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-30 17:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2019-6-30 15:06
可以只输出满足1-7中取40个数组合之和=160的解。满足条件的解一共有118765个。

效果 如6楼 ,希望B列的 三个参数 可以适当调整,拭目以待 。

TA的精华主题

TA的得分主题

发表于 2019-6-30 21:20 | 显示全部楼层
A列输入组合元素(必须是整数)

B1设定求和值。这个参数必须输入不可省略
也可以B2输入和值上限,那么B1作为和值下限。(B2可以留空)

B3、B4可输入使用元素的总个数范围,例如m=40,或m范围20-30
留空则任意个数的组合结果都输出。

B5、B6可输入使用元素的不同种类数范围,例如n=5,或n范围4-6
(例如 n=3时,例如只使用3/5/7的组合就是满足这个条件的,而使用2/3/5/7的组合就是n=4了不符合)
留空则任意种类数的组合结果都输出。


如果和值范围比较大,元素个数比较多,那么满足条件的组合就会很多、很多,计算会耗时很久,
输出全部结果也会很困难,甚至造成死机。

多元一次方程整数系数解.rar

9.87 KB, 下载次数: 61

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-30 22:39 | 显示全部楼层
香川群子 发表于 2019-6-30 21:20
A列输入组合元素(必须是整数)

B1设定求和值。这个参数必须输入不可省略

几个参数 都有 做通用性考虑,一步到位 。还引入了整数乘法 ,比单纯的 加减法 划分整数, 效率提高不止一个量级。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 02:42 , Processed in 0.040568 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表