用VB编写一个算法解决约瑟夫问题 10
编写一个算法解决约瑟夫问题。其问题是:设有n个人围坐在一张圆桌周围,现在从某个人开始报数,数到m的人出列,接着从出列的下一个人开始报数,数到m的人又出列,如此下去直到所有...
编写一个算法解决约瑟夫问题。其问题是:设有n个人围坐在一张圆桌周围,现在从某个人开始报数,数到m的人出列,接着从出列的下一个人开始报数,数到m的人又出列,如此下去直到所有人都出列为止。试求出它们的出列次序。
(假设n=8,m=4,从第一个人开始报数)
要完整代码,或者把窗体发过来也行977315582@qq.com 展开
(假设n=8,m=4,从第一个人开始报数)
要完整代码,或者把窗体发过来也行977315582@qq.com 展开
展开全部
核心代码如下:
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
该代码已经经过调试,完全正确,请参考
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询