VB高手进~!!!!!关于约瑟夫问题

题目说明:约瑟夫问题是计算机语言中的一个经典问题,它有多种描述方式,其中的一种描述是:编号为1,2,3……,n的n个人按顺时针方向围坐一圈,每人手持一个密码(正整数),开... 题目说明:
约瑟夫问题是计算机语言中的一个经典问题,它有多种描述方式,其中的一种描述是:编号为1,2,3……,n的n个人按顺时针方向围坐一圈,每人手持一个密码(正整数),开始任意选一个整数m作为报数的上限值,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数,同时报m的人出列,并将他的密码作为新的m值,从他顺时针下一个人开始重新从1开始报数,如此下去直到所有人全部出列为止。
要求:

1.在程序界面中要按出列顺序显示每个人的编号。
2.由用户设定每次参加游戏的队列人数n和开始选定的整数m。
3.队列中每人所持的密码应随机产生,持码人出列前该密码不可见,出列后显示密码,并作为新的报数上限.
急求代码
展开
 我来答
百度网友4b636fa
2009-06-24 · TA获得超过1238个赞
知道小有建树答主
回答量:866
采纳率:100%
帮助的人:1425万
展开全部
Private Sub Command1_Click()
Dim N As Long, M As Long, nStr As String
Dim Dui() As Long, I As Long, Ns As Long, Ms As Long, Ci As Long

Me.Cls: Me.AutoRedraw = True
N = InputBox("请输入总人数:", , 10)

ReDim Dui(1 To N)
For I = 1 To N
Dui(I) = I
Next

Do1:
If N = 1 Then
Me.Print "最后剩下:" & vbCrLf & " " & Dui(1)
Exit Sub
End If
Ms = 0 ': Ns = 0
Randomize: M = 1 + Int(Rnd * 10) '随机出列密码
Do
Ms = Ms + 1: Ns = Ns + 1
If Ns > N Then Ns = 1
If Ms = M Then
Ci = Ci + 1
Me.Print "第 " & Ci & " 次:密码 M = " & M & " 出列号:" & Dui(Ns)
nStr = " "
For I = 1 To N
If Dui(I) = Dui(Ns) Then nStr = nStr & "|" & Dui(I) & "| " Else nStr = nStr & Dui(I) & " "
Next
Me.Print nStr & vbCrLf
For I = Ns To N - 1
Dui(I) = Dui(I + 1)
Next
N = N - 1
Ns = Ns - 1
If Ns < 1 Then Ns = N
GoTo Do1
End If
Loop
End Sub
界面你自己设置吧
匿名用户
2009-06-24
展开全部
111111
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxf0663
2009-06-24 · TA获得超过909个赞
知道小有建树答主
回答量:1374
采纳率:0%
帮助的人:1001万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式