ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: aoe1981

[讨论] 一道二年级数学:填数字

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-11 21:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 aoe1981 于 2018-6-11 21:21 编辑
香川群子 发表于 2018-6-11 10:29
复杂多边形总和相同的递归计算还有一些bug,修正了一下。

我的递归的思路是按序填空的,顶点下来是中间点……只是进行了限制值的控制……这个思路恰与教给二年级儿子的思路不同,可能与您的程序思路比较接近吧(即认识到顶点的突出作用,先确定顶点,再确定中间点)

我的递归按理来说效率是不高的,而且写的行数很多,要区分中继空位,最后一边中间空位,最后一个空位3种情况,故而啰哩吧嗦……但由于我加入了限制值(通过“控制余数”实现),在中途大大减少了循环次数,个人感觉效率还是可以的。下面是两图:

12.jpg


34.jpg


  大略可以说明一些情况吧。但这也不公平,因为我将去重分开写了。您的我未深入研究代码,从运行按钮上来看,递归测试与去重是一体的,时间是最终的时间。

  事实上,我的去重代码真是太低效了,结果数当达到好几万条时,简直慢得难以忍受……

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-11 21:43 | 显示全部楼层
本帖最后由 aoe1981 于 2018-6-11 21:47 编辑

大概思路不同,出路不同,我很想将问题一般化,不论其意义有多大,下面就是个例子:
      

360截图-12886961.jpg


这次最小数字是4,递增间隔是3,每边和值是39,可填数字序列是:4、7、10、13、16、19、22……
算是也得到了一组结果。

但这也不是终极的一般化,至少仍有假定:即等差数字序列。而不是任意指定的大于等于空位数个数的数字……

所以写得很是啰嗦……不过我也一直是不太在意这个问题的,非专业人员,只是玩玩嘛……另外,也不太会在意,呵呵呵

TA的精华主题

TA的得分主题

发表于 2018-6-12 17:39 | 显示全部楼层
先对顶点的全部剪枝组合进行去重复计算,然后再考虑中间数的组合计算。

这样速度可以提高不少。

多边形各边总和相同的递归计算.zip

30.04 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2018-6-13 08:37 | 显示全部楼层
又做了一个改进:确保第1个顶点是最小值。后面的顶点都比顶点1的数值大。

这样递归计算量大幅减少。

多边形各边总和相同的递归计算.zip

59.35 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-6-13 12:47 | 显示全部楼层
本帖最后由 香川群子 于 2018-6-13 12:49 编辑
aoe1981 发表于 2018-6-11 21:43
大概思路不同,出路不同,我很想将问题一般化,不论其意义有多大,下面就是个例子:
      

你这个意义不大。

按数学原理来说,还是相当于1开始的自然序列,然后每边总和=12,去重复结果只有3组。

4、7、10、13、16、19、22、25、28、31、34、37

想当于 1,2,3,4,5,6,7,8,9,10,11,12 的每个数*3+1
总和39,相当于12*3+1*3=39


TA的精华主题

TA的得分主题

发表于 2018-6-13 12:53 | 显示全部楼层
本帖最后由 香川群子 于 2018-6-13 13:05 编辑
aoe1981 发表于 2018-6-11 21:18
我的递归的思路是按序填空的,顶点下来是中间点……只是进行了限制值的控制……这个思路恰与教给二年级儿 ...

我最新改过的代码,计算5边、边内3个数、每边总和=30时,耗时仅16秒。递归次数124万次。

并且,可以知道,总和要=45才会有解,否则<45都是无解。
算出的第一组解:
1
6
16
20
2
 

7
 

14
 

19
4
18
12
8
3
9

10

17

5
11
13
15
1

其实可以计算出来:首先,最小5个顶点当然是 1-5重复计算1次,所以总和=30
其次还需3*5=15个数,从6-20总和=195,
30+195=225/5=45

所以,小于45的都无解。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-13 13:08 | 显示全部楼层
本帖最后由 香川群子 于 2018-6-13 13:19 编辑

同样,4条边,每边中间1个数时共需8个数值,
那么最小和值=顶点1-4和10*2+剩余5-8和26 总和=46/4=11.5 取整数=12
总结一下,每边最小可能和值=(m+1)+(m*n+2*m+1)*n/2 向上取整数。


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-13 14:20 | 显示全部楼层
香川群子 发表于 2018-6-13 12:47
你这个意义不大。

按数学原理来说,还是相当于1开始的自然序列,然后每边总和=12,去重复结果只有3组 ...

等差序列都是自然序列的变形,有道理啊……

等比序列那么至少是公比为底数,自然序列为指数的幂了……

TA的精华主题

TA的得分主题

发表于 2018-6-26 11:11 | 显示全部楼层
老大可以帮忙修改下你以前那个模板不哟 马航那个

TA的精华主题

TA的得分主题

发表于 2018-6-26 11:12 | 显示全部楼层
aoe1981 发表于 2018-6-4 23:03
  程序的初始参数如下:

老大可以帮忙修改下您这个程序不哟

均衡分班.zip

369.23 KB, 下载次数: 2

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

本版积分规则

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

GMT+8, 2024-12-27 20:48 , Processed in 0.045493 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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