ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 18:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2018-6-7 17:06
用通用递归程序,计算了一下4个端点、总和=14的情形,结果有14组解:

问题是我的得到了23个结果,4条边,每边3个空位,每边和14的情况:
1-4-9-2-3-5-6-7
1-4-9-2-3-6-5-8
1-4-9-3-2-5-7-6
1-4-9-3-2-7-5-8
1-5-8-2-4-3-7-6
1-5-8-2-4-7-3-10
1-5-8-4-2-9-3-10
1-6-7-3-4-8-2-11
1-6-7-4-3-9-2-11
1-6-7-5-2-8-4-9
1-6-7-5-2-9-3-10
1-7-6-5-3-9-2-11
1-8-5-2-7-3-4-9
1-8-5-2-7-4-3-10
1-8-5-6-3-7-4-9
1-8-5-6-3-9-2-11
1-8-5-7-2-9-3-10
1-9-4-3-7-5-2-11
1-10-3-4-7-5-2-11
1-10-3-6-5-7-2-11
1-10-3-7-4-8-2-11
2-4-8-1-5-6-3-9
3-6-5-1-8-2-4-7


肯定至少有一个出现了错误……

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 18:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liu-aguang 发表于 2018-6-7 16:00
这个题, 老师如何指导小学生求解? 特别是要求"不同的整百数",是要学生的命呀!

二年级学生自然不会讲推理,而且推理也不是完全推理,只是部分推理。

可以简单处理的:就是让学生认识到4个顶点处的特点,以一当二,这4个一经确定,中间4个也是确定的,反之不然。

从100、200、300、400开始凑,100+400=200+300,所以,100与400在对角上,200与300在对角上,即可得到一组结果。

TA的精华主题

TA的得分主题

发表于 2018-6-7 18:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 19:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2018-6-7 17:06
用通用递归程序,计算了一下4个端点、总和=14的情形,结果有14组解:

  以6边,每边3空,每边和17为例。
  您的结果(8个):

1E2C3958476A
1E2A5938674C
1E28764A395B
1D3C2A584679
1D3C2967485B
1D395A28764C
1B5A2C386479
1B593C28746A

  我的结果(9个):

1-7-9-6-2-12-3-10-4-8-5-11
1-9-7-4-6-8-3-12-2-10-5-11
1-9-7-6-4-8-5-10-2-12-3-13
1-10-6-4-7-8-2-12-3-9-5-11
1-10-6-7-4-8-5-9-3-12-2-14
1-11-5-8-4-7-6-9-2-12-3-13
1-11-5-9-3-10-4-6-7-8-2-14
1-12-4-6-7-8-2-10-5-9-3-13
1-12-4-7-6-8-3-9-5-10-2-14



  我手动做了比对,如下图:
   123.jpg

  原因在于,我认为以下两组结果是不同的:

1-9-7-4-6-8-3-12-2-10-5-11

1-10-6-4-7-8-2-12-3-9-5-11


  也即上图中打了*的两行。
  这两组结果顶点都是:1,2,3,5,6,7。如果只依据顶点判断似乎是同一组。
  相同的组合:1+11+5,2+12+3,7+4+6
  第一组不同的:1+9+7,6+8+3,2+10+5
  第二组不同的:1+10+6,7+8+2,3+9+5

  您觉得这算是相同的两个结果吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 19:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 aoe1981 于 2018-6-7 19:20 编辑

没说到重点上,上面两组您也认为是不同的,您的结果中也有,关键是下组结果您的没有:

1-7-9-6-2-12-3-10-4-8-5-11

这组连顶点都不一样:1,2,3,4,5,9

TA的精华主题

TA的得分主题

发表于 2018-6-7 19:26 | 显示全部楼层
aoe1981 发表于 2018-6-7 18:09
二年级学生自然不会讲推理,而且推理也不是完全推理,只是部分推理。

可以简单处理的:就是让学生认识 ...

算法容易想到, 就是去重麻烦.
1. 求可能的4个顶点组合(顶点数值不会超过600): 即1-6范围取4个数的组合;
2. 求每个组合的全排列,去重;
3. 对每个去重后的排列填补中间数,判断8个数字之间有否重复数, 若无则输出.

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 19:35 | 显示全部楼层
liu-aguang 发表于 2018-6-7 19:26
算法容易想到, 就是去重麻烦.
1. 求可能的4个顶点组合(顶点数值不会超过600): 即1-6范围取4个数的组合;
...

确实去重麻烦,不同的理解带来不同的“不重复结果”……

TA的精华主题

TA的得分主题

发表于 2018-6-7 19:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Dim value(5)
  2. Dim data(3)
  3. Dim arr(3)
  4. Dim ar(7)
  5. Dim c As Integer
  6. Sub main()
  7.     c = 0
  8.     For i = 1 To 6
  9.        value(i - 1) = i * 100
  10.     Next
  11.     Call selectt(UBound(value) + 1, 4)
  12. End Sub
  13. Sub selectt(n, m) '6取4的组合
  14.     For i = n To m Step -1
  15.         arr(m - 1) = value(i - 1)
  16.         If m > 1 Then
  17.             Call selectt(i - 1, m - 1)
  18.         Else
  19.             For j = 0 To 3
  20.                 data(j) = arr(j)
  21.             Next
  22.             Call rank(0, 4) '4个数的全排列
  23.         End If
  24.     Next
  25. End Sub

  26. Sub rank(k, n) '全排列
  27.     For i = k To n - 1
  28.         Call swap(k, i, data)
  29.         If i < n - 1 Then
  30.             Call rank(k + 1, n)
  31.         Else
  32.             '去重没有写代码
  33.             
  34.             For j = 0 To 3  '填补中间数
  35.                 ar(2 * j) = data(j)
  36.                 ar(2 * j + 1) = 1200 - data(j) - data((j + 1) Mod 4)
  37.             Next
  38.             t = True
  39.             For j = 0 To 7  '判断有无重复数字
  40.                If UBound(Filter(ar, ar(j))) > 0 Then
  41.                     t = False
  42.                     Exit For
  43.                End If
  44.             Next
  45.             If t Then '输出
  46.                 c = c + 1
  47.                 Cells(c, 1).Resize(, 8) = ar
  48.             End If
  49.         End If
  50.         Call swap(k, i, data)
  51.     Next
  52. End Sub
  53. Sub swap(x, y, data)
  54.     temp = data(x)
  55.     data(x) = data(y)
  56.     data(y) = temp
  57. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 19:57 | 显示全部楼层
liu-aguang 发表于 2018-6-7 19:26
算法容易想到, 就是去重麻烦.
1. 求可能的4个顶点组合(顶点数值不会超过600): 即1-6范围取4个数的组合;
...

顶点不能为7,我是这样想的:
剩余5,两种组合:1+4和2+3
假设第2、3顶点最小,组合为:7+4+1,7+3+2
此时剩余可用数为:5,6,8,9。最小和为11,次小和为13。连接顶点1的需凑11,连接顶点2的需凑10,显然不可能满足。
所以,顶点最大填小于7的数,只需再次证明可以填6,事实上6确实可以。

TA的精华主题

TA的得分主题

发表于 2018-6-7 20:14 | 显示全部楼层
'4边每边3个空共8个数,拿随机数跑了一下然后去重得到的结果:

和        去重后组
12        3
13        5
14        13
15        11
16        17
17        9
18        6
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 04:44 , Processed in 0.046771 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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