用VB编写一个算法解决约瑟夫问题 10

编写一个算法解决约瑟夫问题。其问题是:设有n个人围坐在一张圆桌周围,现在从某个人开始报数,数到m的人出列,接着从出列的下一个人开始报数,数到m的人又出列,如此下去直到所有... 编写一个算法解决约瑟夫问题。其问题是:设有n个人围坐在一张圆桌周围,现在从某个人开始报数,数到m的人出列,接着从出列的下一个人开始报数,数到m的人又出列,如此下去直到所有人都出列为止。试求出它们的出列次序。
(假设n=8,m=4,从第一个人开始报数)
要完整代码,或者把窗体发过来也行977315582@qq.com
展开
 我来答
cr8086
2011-11-14 · TA获得超过1386个赞
知道小有建树答主
回答量:599
采纳率:0%
帮助的人:497万
展开全部
核心代码如下:
Dim a() As Integer, b() As Integer, m As Integer, n As Integer, j As Integer, k As Integer, c As Integer, x As Integer
n = InputBox("请输入参加队列人数")
m = InputBox("请输入起始密码")
x = InputBox("密码的上限为:")
ReDim a(1 To n) As Integer, b(1 To n) As Integer
For i = 1 To n
a(i) = 1
b(i) = Int((x) * Rnd) + 1 '产生每个人的随机密码
Next
While c < n
For j = 1 To n
k = k + a(j) '计数
If k = m And a(j) <> 0 Then
k = 0 '下一个人从1开始报数
a(j) = 0 '出列
Print "出列人的编号为" & j; ",该人的密码为" & b(j)
m = b(j)
c = c + 1 '累计出列的人数
End If
Next
Wend
该代码已经经过调试,完全正确,请参考

参考资料: http://zhidao.baidu.com/question/102793681.html

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式