Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3111|回复: 16

[已解决]VBA小圆圈中各填入一个整数

[复制链接]
发表于 2016-3-30 17:00 | 显示全部楼层 |阅读模式
本帖最后由 vbyou127 于 2016-3-30 17:13 编辑

VBA小圆圈中各填入一个整数

在如图所示圆圈上的6个小圆圈中各填入一个整数,这6个整数之和为s,且沿圆圈相连的若干个(1~6个)小方格中整数之和覆盖区间[1,s]中的所有整数。  
求s最大值,6个整数中最大数m是最小的,m是多少

1, 6个整数互不相同
2,6个整数之和为s;沿圆圈相连的若干个(1~6个)整数之为1,2,.........直到s;即覆盖区间[1,s]所有整数;部分和单个整数,共6个,部分和为2个相连,共6个,3个相连也6个,
4个相连也6个,5个相连也6个,6个相连只有1个,因些部分和个数6+6+6+6+6+1=31个.
3,实现条件2所有情形,这里的和s是最大的
4,在实现条件2所有情形,6个整数中最大数m是最小的

答案: s=31
(1) 1,2,5,4,6,13
(2) 1,2,7,4,12,5
(3) 1,3,2,7,8,10
(4) 1,3,6,2,5,14
(5) 1,5,12,4,7,2
(6) 1,7,3,2,4,14
(7) 1,10,8,7,2,3
(8) 1,13,6,4,5,2
(9) 1,14,4,2,3,7
(10)1,14,5,2,6,3
s最大为31
10个解中,6个整数中最大整数m最小为10
出现在(3)和(7)两组中,实际上是一个解,互为顺逆时针
回头再看这个...............................http://www.excelpx.com/thread-387151-1-1.html













最佳答案
2016-3-31 14:50
代码中使用了递归组合、递归排列、偏移求和检查。

1.png
2.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-30 19:30 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-3-30 19:37 | 显示全部楼层
lichuanboy44 发表于 2016-3-30 19:30
你的问题有点难,

程序设计大赛题目
回复

使用道具 举报

发表于 2016-3-30 21:11 | 显示全部楼层
共35组,6个整数中最大整数m最小为8
  1. Dim x, n%, s, zds
  2. Sub Macro1()
  3. x = 16: n = 6: s = 0
  4. zds = 31 '最大数
  5. [a:a] = ""
  6. aa "", 0, 0, 0
  7. [b1] = "6个整数中最大数m最小是:" & zds
  8. End Sub
  9. Sub aa(a, hj, t, cz)
  10. If t = n And hj = 31 Then
  11.     s = s + 1
  12.     If cz < zds Then zds = cz
  13.     Cells(s, 1) = Mid(a, 2)
  14. End If
  15. For i = 1 To x
  16.     If InStr("," & a & ",", "," & i & ",") = 0 And cz < i Then aa a & "," & i, hj + i, t + 1, i
  17. Next
  18. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-3-30 21:32 | 显示全部楼层
本帖最后由 vbyou127 于 2016-3-30 21:54 编辑
dsmch 发表于 2016-3-30 21:11
共35组,6个整数中最大整数m最小为8

我真不知道怎么说,如果m最小为8,能不能实现完全覆盖?

完全覆盖区间[1,31]

理解一下6个不同整数   1,3,2,7,8,10    如何完全覆盖

1,2,3,1+3,3+2,1+3+2,7,8,2+7,10,10+1,3+2+7,1+3+2+7,10+1+3,7+8

其他为s减去上面部分和即可

回复

使用道具 举报

发表于 2016-3-30 22:14 | 显示全部楼层
本帖最后由 香川群子 于 2016-3-30 22:17 编辑

因为圆圈填数以后,相邻和个数种类=6+6+6+6+6+1=31个,所以最大只能覆盖[1,31]区域。

因此,实际题目要求为:编程求出所有的组合解。(一共有10组)
求出解后,自然就知道最小最大整数m了。

理论上最大整数应是=16 (因为2倍数列=1,2,4,8,16)

所以,需要编程计算3-16中任意取4个数的1001种组合,然后加入1,2以后的6个数进行720种全排列,
并检查所有31种1-6相邻数的加法组合是否正好覆盖[1,31]区域。

这个题大致解题思路就是这样子了。组合计算量=1001*720=720720,还要检查*31
写出代码还是需要些功夫的。
回复

使用道具 举报

发表于 2016-3-30 22:31 | 显示全部楼层
楼主给出的10组解,是镜像的。实际只有5种不同。
回复

使用道具 举报

发表于 2016-3-31 14:38 | 显示全部楼层
已经编程了。

n=6时计算得到10组,都是镜像的。

1        7        3        2        4        14
1        14        4        2        3        7
1        3        6        2        5        14
1        14        5        2        6        3
1        3        2        7        8        10
1        10        8        7        2        3
1        2        5        4        6        13
1        13        6        4        5        2
1        2        7        4        12        5
1        5        12        4        7        2
回复

使用道具 举报

发表于 2016-3-31 14:39 | 显示全部楼层
本帖最后由 香川群子 于 2016-3-31 14:40 编辑

顺便计算了n=7时,无解。

n=8时,有12组。
1        4        22        7        3        6        2        12
1        12        2        6        3        7        22        4
1        6        12        4        21        3        2        8
1        8        2        3        21        4        12        6
1        4        2        10        18        3        11        8
1        8        11        3        18        10        2        4
1        3        5        11        2        12        17        6
1        6        17        12        2        11        5        3
1        3        8        2        16        7        15        5
1        5        15        7        16        2        8        3
1        2        10        19        4        7        9        5
1        5        9        7        4        19        10        2

最大值m的最小值=16
回复

使用道具 举报

发表于 2016-3-31 14:41 | 显示全部楼层
n=4时 4组解:
1        3        2        7
1        7        2        3
1        2        6        4
1        4        6        2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 19:11 , Processed in 1.154628 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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