用VB的二维数组实现约瑟夫环
来源:百度知道 编辑:UC知道 时间:2024/05/14 14:58:43
打印出来后效果是这样的。但M=10,N=7时,退场顺序为:7 4 2 1 3 6 10 5 8 最后留下人的号码 9
实在是不知道怎么做了,大虾们帮帮小弟!答出来我再追加分数。
关键是:
如果一人退出后继续往下报数还是从第一个人开始报数?我的这个程序是从第一个人开始报数的!你要说清楚啊!
==============
Private Sub Command1_Click()
MsgBox baoshu(4, 3)
End Sub
Function baoshu(ByVal m As Integer, ByVal n1 As Integer) As Integer
Dim a() As Integer
Dim i As Integer
Dim n As Integer
Dim q As Integer
ReDim a(m - 1, 1) As Integer
For i = 1 To m
a(i - 1, 0) = i
a(i - 1, 1) = 1
Next
n = 0
q = 0
While Not isOne(a, m)
If n = m Then n = 0
If a(n, 1) = 1 Then
q = q + 1
If q = n1 Then
q = 0
a(n, 1) = 0
n = -1
End If
End If
n = n + 1
Wend
For i = 1 To m
If a(i - 1, 1) = 1 Then
baoshu = a(i - 1, 0)
Exit For