ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 数方格,新颖的题目,不一样的解法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-5 21:02 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 banjinjiu 于 2013-6-6 00:00 编辑

数方格:大家都数过格子,这是我多年前教一年级的学生数学题目(第一题),当然以前是想调动学生的兴趣,只要能按照顺序去数,答案倒是其次。现在请各位大侠能运用你们的VBA知识解决。第一题答案是?想想还是不说了吧。等各位回帖,我是新手,希望此贴能火起来!给本坛能带来旺气。
第一题:
1开始,9结束,严格按照1,2,3,4,5,6,7,8,9的顺序,每个数字不许重复,有多少种不重复的线路?
提示:
比如1A1,A2,A3,A4,A5,B5,C5,D5,E5
比如2A1,A2,A3,A4,B4,B5,C5,D5,E5
……
1
2
3
4
5
2
3
4
5
6
3
4
5
6
7
4
5
6
7
8
5
6
7
8
9

第二题:
1开始,11结束,严格按照1,2,3,4,5,6,7,8,9,10,11的顺序,每个数字不许重复,有多少种不重复的线路?
比如1G1,G2,G3,G4,G5,H5,I5,J5,J6,J7,K8
比如2G1,G2,G3,G4,G5,H5,I5,J5,J6,J7,K7
……
1
2
3
4
5
2
3
4
5
6
3
4
5
6
7
4
5
6
7
8
9
10
5
6
7
8
9
10
11
9
10
10
11

见附件!

数方格.zip

1.86 KB, 下载次数: 29

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 21:05 | 显示全部楼层
本帖最后由 banjinjiu 于 2013-6-5 21:07 编辑

还是自己占个楼,顶下,不然版主会通知我论坛规则的。
我当时运用的是杨辉三角。

TA的精华主题

TA的得分主题

发表于 2013-6-5 21:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个问题好新颖啊,支持楼主的解法。

TA的精华主题

TA的得分主题

发表于 2013-6-5 22:39 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 22:42 | 显示全部楼层
香川群子 发表于 2013-6-5 22:39
呵呵,如果是VBA的话,应该是用递归深度搜索吧。

香川老师,发挥你的强项,我坐等学习了。有你的参与,这个题目会快速拿下的。

TA的精华主题

TA的得分主题

发表于 2013-6-5 22:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 香川群子 于 2013-6-5 22:45 编辑

题目应该有个限制条件:路线只允许向下或向右。

如果没有这个限制条件,那么可以原地兜圈子了……那就是无穷多个解了。



或者规则改成:
每个节点只允许通过一次(一进一出) → 这样的规则比上面只允许路线向下或向右的要多很多很多解了。


请楼主确认限制条件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 22:45 | 显示全部楼层
本帖最后由 banjinjiu 于 2013-6-5 23:54 编辑
香川群子 发表于 2013-6-5 22:42
题目应该有个限制条件:路线只允许向下或向右。

如果没有这个限制条件,那么可以原地兜圈子了……那就是 ...


第一题,从1开始,到9结束,严格按照1,2,3,4,5,6,7,8,9的顺序;第二题,从1开始,到11结束,严格按照1,2,3,4,5,6,7,8,9,10,11的顺序。单个题从哪边数都是一样的答案,已经按照香川老师的意见调整了,请再看一遍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-5 23:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2013-6-5 22:42
题目应该有个限制条件:路线只允许向下或向右。

如果没有这个限制条件,那么可以原地兜圈子了……那就是 ...

香川老师,我已经根据你的意见把规则调整了,第一题,1为入口,9为出口,严格按照1,2,3,4,5,6,7,8,9的顺序,第二题,相同的规则。请抽时间看下。

TA的精华主题

TA的得分主题

发表于 2013-6-6 00:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
太简单了。

主程序:
  1. Dim sj, jg(), m%, n%, k&, r%
  2. Sub kagawa()
  3.     sj = Selection.CurrentRegion
  4.     r = Application.Max(sj)
  5.     m = UBound(sj): n = UBound(sj, 2)
  6.     ReDim jg(65530 - m, 0)
  7.     k = 0: Call dg("", 1, 1)
  8.     Selection.CurrentRegion.Cells(1).Offset(m + 3).CurrentRegion = ""
  9.     Selection.CurrentRegion.Cells(1).Offset(m + 3).Resize(k) = jg
  10.     MsgBox k
  11. End Sub
  12. Sub dg(s, i, j)
  13.     If sj(i, j) = r Then
  14.         jg(k, 0) = Mid(s, 2) & "→" & i & "_" & j & "|"
  15.         k = k + 1
  16.         Exit Sub
  17.     End If
  18.     If i < m Then If sj(i + 1, j) Then Call dg(s & "→" & i & "_" & j, i + 1, j)
  19.     If j < n Then If sj(i, j + 1) Then Call dg(s & "→" & i & "_" & j, i, j + 1)
  20. End Sub
复制代码
选中需要计算的表格区域中任意位置的一个单元格,然后鼠标右键即可自动计算、输出结果。

请看附件。

数方格.rar

12.1 KB, 下载次数: 53

TA的精华主题

TA的得分主题

发表于 2013-6-6 00:35 | 显示全部楼层
写出代码加调试,不超过10分钟。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 09:24 , Processed in 0.059410 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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