ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 程序开发] [开_60] “分糖果”游戏(已公布答案)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-10-18 22:36 | 显示全部楼层

是不是不能贴出代码?

TA的精华主题

TA的得分主题

发表于 2005-10-19 10:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
KkaiSMCD.rar (9.07 KB, 下载次数: 92)

TA的精华主题

TA的得分主题

发表于 2005-10-19 12:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

不好意思,VBA不会,只能用公式做了一个,请看

riAqRcRp.rar (7.03 KB, 下载次数: 84)

格式修改一下,看起来更方便点

[此贴子已经被作者于2005-10-20 7:54:59编辑过]

B0tZoMrx.rar

7.06 KB, 下载次数: 75

[VBA4] “分糖果”游戏

vIZeynhJ.rar

7.06 KB, 下载次数: 74

C8B5kk6Q.rar

7.05 KB, 下载次数: 74

TA的精华主题

TA的得分主题

发表于 2005-10-19 12:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
bKUKoWE0.rar (3.24 KB, 下载次数: 77) 不知对否!

TA的精华主题

TA的得分主题

发表于 2005-10-19 14:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

结果来了.

要加个按钮,防止你们看不见.

SJ2OkAZM.rar (10.6 KB, 下载次数: 93)

[此贴子已经被作者于2005-10-19 14:53:00编辑过]

VYb8RyEu.rar

8.69 KB, 下载次数: 71

[VBA4] “分糖果”游戏

TA的精华主题

TA的得分主题

发表于 2005-10-19 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

看才看了两个答案,有个问题:就是何时向老师要不是糖果的问题.

我发现他们都是先向老师要糖果,即手中糖果只能是偶数;而我认为是后向老师要糖果,即手中糖果可以是奇数,只有在分糖果时,奇数的小孩才可以向老师要糖果.因此,我的次数要比他们的答案多一次.

请楼主综合考虑.

TA的精华主题

TA的得分主题

发表于 2005-10-19 15:20 | 显示全部楼层

Sub items()

Dim arr(1 To 10) As Integer Dim i As Integer, item As Integer,x As Integer

arr(1) = 10 arr(2) = 2 arr(3) = 8 arr(4) = 22 arr(5) = 16 arr(6) = 4 arr(7) = 10 arr(8) = 6 arr(9) = 14 arr(10) = 20

'For i = 1 To 10 ' arr(i) = InputBox("请输入第" & i & "孩子分到的糖果数量", "输入窗口", 0) 'Next

item = 0 '经过的次数

Do If arr(1) = arr(2) And arr(2) = arr(3) And arr(3) = arr(4) _ And arr(4) = arr(5) And arr(5) = arr(6) And arr(6) = arr(7) _ And arr(7) = arr(8) And arr(8) = arr(9) And arr(9) = arr(10) Then MsgBox "共经过了" & item & "次" Exit Sub Else x = arr(10) For i = 10 To 2 Step -1 arr(i) = arr(i - 1) / 2 + arr(i) / 2 If Int(arr(i) / 2) <> arr(i) / 2 Then arr(i) = arr(i) + 1 Next arr(1) = x / 2 + arr(1) / 2 If Int(arr(1) / 2) <> arr(1) / 2 Then arr(1) = arr(1) + 1 item = item + 1 End If Loop End Sub

看了前面几个,好象都是用两个数组的,觉得没必要。

[此贴子已经被作者于2005-10-19 15:21:41编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-19 19:53 | 显示全部楼层

"看了前面几个,好象都是用两个数组的,觉得没必要。"

试想如果没有一个临时的存放点,无论你从哪一边算起,是先分一半还是先拿一半,到下一个的数就不同了,且题目里还有一句同时给右边一半,没有一个临时存放变量是不可以的。

又重新看了17楼的码,我上面的判断错了,当时没有注意到,x = arr(10) 这句的作用,是可以用一个数组完成的。

很抱歉,没有测试就发贴。

[此贴子已经被作者于2005-10-20 9:44:03编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-19 22:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

在C4到C13单元格输入以上10个数,在D4输入公式:=IF(MOD((C13/2+C4/2),2)=0,C13/2+C4/2,C13/2+C4/2+1)

在D5输入公式=IF(MOD((C4/2+C5/2),2)=0,C4/2+C5/2,C4/2+C5/2+1)

将公式复制到D6~D13

选定D4~D13,向右拖公式,一直至数值相同.

经试检,向右向左均为16次.

Ona5Kcan.rar (3.71 KB, 下载次数: 70)
[此贴子已经被作者于2005-10-19 22:19:34编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-19 22:34 | 显示全部楼层

正确结果是16次,我出错的原因在判断里少了arr1(7) 和arr1(8) ,晕,又错了

If arr1(1) = arr1(2) And arr1(1) = arr1(3) And _ arr1(1) = arr1(4) And arr1(1) = arr1(5) And _ arr1(1) = arr1(6) And arr1(1) = arr1(9) And _ '没有arr1(7) 和arr1(8) arr1(1) = arr1(10) Then Exit Do

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

本版积分规则

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

GMT+8, 2024-11-22 13:24 , Processed in 0.048224 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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