VB版喜欢研究算法的朋友来呀!

超级大笨狼 上海商派 猿类  2003-01-19 08:06:02
1,做一个按钮,caption为"鸡",点击他生成一个按钮caption为"蛋",随机摆放位置,点击任何鸡都会生蛋,点击任何蛋都会生鸡.
2,n个正常人和n个精神病人渡河,只有一条能载两个人的船,如果精神病的人数要是比正常人数多,就会危害正常人,要求编一个程序,得出过河的方案。
比如说:3个疯子(3疯),3个正常人(3常)可行结果是这样的:
第一步: 1疯+1常 过(两岸势力对比2疯2常:1疯1常没问题)
第二步: 1常 回(2疯3常:1疯 没问题)
第三步: 2疯 过(3常:3疯 没问题)
第四步: 1疯 回(1疯3常:2疯 没问题)
第五步: 2常 过(1疯1常:2疯2常 没问题)
第六步: 1疯+1常 回(2疯2常:1疯1z 没问题)
第七步: 2常 过(2疯:1疯3常 没问题)
第八步: 1疯 回(3疯:3常 没问题)
第九步: 2疯 过(1疯:2疯3常 没问题)
第十步: 1疯 回(2疯:1疯3常 没问题)
第十一步: 2疯 过(3疯3常 全胜利过去!)
如果2疯2常就太简单了:2疯过,1疯回,2常过,1疯回,2疯过只需要五步!
但可能不止一个方案
...全文
9 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2003-02-06
感谢大家支持!!,我买了很多c和passcal的教学盘,盗班的,准备好好研究研究其他语言的算法精华,不为考研,只为兴趣。
回复
超级大笨狼 2003-02-06
感谢大家支持!!,我买了很多c和passcal的教学盘,盗班的,准备好好研究研究其他语言的算法精华,不为考研,只为兴趣。
回复
佛的光辉 2003-01-20
THE ART OF COMPUTER PROGRAMMING
有中文版
回复
MagicianZ 2003-01-20
THE ART OF COMPUTER PROGRAMMING really very exciting!!!
that's the spirit of programme.
No matter what language you use.

But, actually I say, You'd better spare some of your time to learn C++/Pascal, They are really better than Basic while being used to describe practical problem.

And, the description to the problem has no relations to the language you used.
回复
EvaVirus 2003-01-20
MagicianZ(MagicianX)

是这样吗?但是我对C++很不适应.不知道为什么~~~~~~C到可以~~~~~~~
回复
Arcan 2003-01-19
支持。我也非常喜欢算法,做程序最值得骄傲的时候就是想出了一个非常好的算法。VB做算法还可以,数据结构比较差一些。

第一个我不太明白什么意思,这个需要算法吗?
你看看我这样写代码是不是满足你的要求:
首先在窗体上放一个Command1(0)的控件(先放command1,然后复制粘贴,询问是否使用控件数组,选择是,然后删掉索引为1的按钮)


Dim CommandCount As Long
Function Random(B As Long, E As Long) As Long
Dim LinL As Long
LinL = E - B + 1
Randomize
Random = Int(Rnd * 100000) Mod LinL + B
End Function


Private Sub Command1_Click(Index As Integer)
CommandCount = CommandCount + 1
Load Command1(CommandCount)
Command1(CommandCount).Left = Random(0, Me.Width - 600)
Command1(CommandCount).Top = Random(0, Me.Height - 600)
Command1(CommandCount).Visible = True
If Command1(Index).Caption = "鸡" Then
Command1(CommandCount).Caption = "蛋"
Else
Command1(CommandCount).Caption = "鸡"
End If
End Sub

Private Sub Form_Load()
CommandCount = 0
End Sub


第二个也不算太难吧,不过现在没时间考虑,过一段时间再说。
回复
EvaVirus 2003-01-19
不知道大家看过THE ART OF COMPUTER PROGRAMMING这本书没?全都是算法问题.把整个编程的灵魂剖析的非常透彻.经典.可是我看不懂.全英文.人民币248一套. 唉~~~~~~~~编程的艺术.
回复
zyl910 2003-01-19
3人时的情况:

一、0疯0常 ←←← 1疯带1常 过 ←←← 2疯2常
二、0疯1常 →→→ 1疯    回 →→→ 2疯2常
三、0疯1常 ←←← 1疯带1疯 过 ←←← 1疯2常
四、1疯1常 →→→ 1疯    回 →→→ 1疯2常
五、1疯2常 ←←← 1疯带1常 过 ←←← 1疯1常
六、1疯2常 →→→ 1疯    回 →→→ 1疯1常
七、1疯2常 ←←← 1疯带1疯 过 ←←← 0疯1常
八、2疯2常 →→→ 1疯    回 →→→ 0疯1常
九、2疯2常 ←←← 1疯带1常 过 ←←← 0疯0常
回复
zyl910 2003-01-19
写错了一点:

0疯0常 ←←← 1疯带1常 过 ←←← (n-1)疯(n-1)常
0疯1常 →→→ 1疯    回 →→→ (n-1)疯(n-1)常
0疯1常 ←←← 1疯带1疯 过 ←←← (n-2)疯(n-1)常
1疯1常 →→→ 1疯    回 →→→ (n-2)疯(n-1)常
1疯1常 ←←← 1疯带1常 过 ←←← (n-2)疯(n-2)常
1疯2常 →→→ 1疯    回 →→→ (n-2)疯(n-2)常
……
回复
zyl910 2003-01-19
2.
这应该不算算法问题
只要想清楚就行



设有n个正常人n精神病人过河
由于要使两边正常人大于或等于精神病人
所以船上应该要有一个精神病人
于是过河以精神病人为主(我这个只是表示过河途中的情况):

0疯0常 ←←← 1疯带1常 过 ←←← (n-1)疯(n-1)常
0疯1常 →→→ 1疯    回 →→→ (n-1)疯(n-1)常
0疯1常 ←←← 1疯带1疯 过 ←←← (n-2)疯(n-1)常
1疯1常 →→→ 1疯    回 →→→ (n-2)疯(n-1)常
0疯0常 ←←← 1疯带1常 过 ←←← (n-2)疯(n-2)常
……

看出规律没有
过的时候 疯带 常、疯、常、疯、常……
回的时候 疯一人回

所以总次数为:(n-1)*4+1
回复
超级大笨狼 2003-01-19
算法和数据结构是程序的灵魂,没有用VB写的数据结构和算法书,VB关于这方面有天生不足,有人鄙视VB,以及单靠VB谋生的程序员。人们经常注重他的应用而不注重深层的算法问题,昨天我看了一个VB模拟汉诺塔和小鱼绕石头的程序原文件,惊叹VB在算法上一样优秀,在很久以前我就琢磨一些算法问题,大约10年前我甚至想用TURBO BASIC算人机对弈的程序。可惜到现在我连数据结构也没时间系统的学习过,书籍全是别的语言版本,可恶!!我在实际工作中用VB解决了许多涉及算法问题,比如运筹学方面最优开箱方案问题就用到了我的软件中,所以我想化大力气研究算法,因为其乐无穷,想学别的语言的优点,尤其是用来解决实际问题。
回复
gmc007 2003-01-19
GZ
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告