一道智力趣题

ymzhangyaming03 2009-05-29 11:19:36
有这样一道题:王老师把31枚棋子分别装在五只口袋里,不论小朋友向王老师要几枚棋子(不超过31枚),王老师只要在其中一只或几只袋子里拿,就可以得到小朋友要的棋子数。这五只袋子里装的棋子各是几枚?请你用vba或vb编程解答此题.
...全文
170 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocolong2002 2009-06-24
  • 打赏
  • 举报
回复
这道题中重要的是算法和思路的问题。
arong1234 2009-06-10
  • 打赏
  • 举报
回复
10楼不是告诉你答案了?
[Quote=引用 14 楼 ymzhangyaming03 的回复:]
问题是取出来的球数要能满足1-31,该如何设置这个表达式?
[/Quote]
booksoon 2009-06-10
  • 打赏
  • 举报
回复
可以改成这样一个题目,再考虑一下,给定n个棋子,m个口袋(m<=n),求一个m值最小的放法.
ymzhangyaming03 2009-06-07
  • 打赏
  • 举报
回复
问题是取出来的球数要能满足1-31,该如何设置这个表达式?
arong1234 2009-06-03
  • 打赏
  • 举报
回复
这种希望很正常啊,关键是“谁”去编写出来,如果你希望,其实应该你自己写,这么简单的都不写,你怎么学语言?
[Quote=引用 11 楼 ymzhangyaming03 的回复:]
我还是希望用vb或vba将其编写出来.
[/Quote]
zhiyongtu 2009-06-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 arong1234 的回复:]
就是典型的2进制数的应用而已
在1楼的基础上,把1,2,3,4,5号口袋里分别放进2^0,2^1, 2^2
2^3,2^4个球

假定小朋友要N个球,N的2进制表示假如是(abcde)
其中abcde分别是0或者1
则如果某位等于1,老师则把对应的袋里的球全取出来即可
例如小孩子要13只球,13的二进制表示是01101,因此a=1,b=0,c=1,d=1,e=0
取出1号袋里的1球+3号代的4只球+4号袋的8只球即可

按照这个思想写代码即可

不要学会直接要别人…
[/Quote]
支持阿荣!应该多学习方法,多借鉴思路,代码应该尽量自己写。
ymzhangyaming03 2009-06-02
  • 打赏
  • 举报
回复
我还是希望用vb或vba将其编写出来.
zeroieme 2009-06-01
  • 打赏
  • 举报
回复
作业吧
zeroieme 2009-06-01
  • 打赏
  • 举报
回复
专业吧
arong1234 2009-06-01
  • 打赏
  • 举报
回复
就是典型的2进制数的应用而已
在1楼的基础上,把1,2,3,4,5号口袋里分别放进2^0,2^1, 2^2
2^3,2^4个球

假定小朋友要N个球,N的2进制表示假如是(abcde)
其中abcde分别是0或者1
则如果某位等于1,老师则把对应的袋里的球全取出来即可
例如小孩子要13只球,13的二进制表示是01101,因此a=1,b=0,c=1,d=1,e=0
取出1号袋里的1球+3号代的4只球+4号袋的8只球即可

按照这个思想写代码即可

不要学会直接要别人代码,思想有了你应该自己努力写代码,别人全给你了,你还学什么


[Quote=引用 4 楼 ymzhangyaming03 的回复:]
我想学习这个程序,希望有人能用vb或vba编出来.谢谢!
[/Quote]
ymzhangyaming03 2009-06-01
  • 打赏
  • 举报
回复
难道没人能解答此题?
zhiyongtu 2009-06-01
  • 打赏
  • 举报
回复
你是要验证这种放法的正确性的程序呢,还是要演示求解过程的程序?如果是前者,那比较简单,差不多是个“力气活”吧;如果是后者,那得思考一下,关键是要用什么算法来实现求解。
ymzhangyaming03 2009-06-01
  • 打赏
  • 举报
回复
这个问题真的就没人会作?
ymzhangyaming03 2009-05-31
  • 打赏
  • 举报
回复
我想学习这个程序,希望有人能用vb或vba编出来.谢谢!
lovesf 2009-05-31
  • 打赏
  • 举报
回复
这种问题编程一定能解决,但如果不是为了学习,就省点时间做别的吧
ymzhangyaming03 2009-05-30
  • 打赏
  • 举报
回复
希望用vb或vba解答此题.谢谢!
zhiyongtu 2009-05-30
  • 打赏
  • 举报
回复
(31)10=(2^5-1)10=(11111)2

所以,5只口袋分别装1、2、4、8、16枚棋子,就可以组合出<32的任一正整数的棋子枚数,也就是用从这5个数中来取可以组合出1-31之间的任意整数。

编程嘛,省了吧,正累着呢,稍微休息一下。让空闲的朋友来弄吧。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧