首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求解有关问题

2012-01-30 
求解问题能帮着编个程序吗?求解问题,高价收购就是杀奴隶问题,奴隶数由用户输入,从哪个奴隶开杀也由用户输

求解问题
能帮着编个程序吗?

求解问题   ,       高价收购             就是杀奴隶问题,奴隶数由用户输入,从哪个奴隶开杀也由用户输入,隔几个一杀还是由用户输入,求最后幸存奴隶的编号是多少用vb做

请编完联系我:qq   290695839

[解决办法]
这个不就是josephus问题吗,我在programfan发的学习帖。从第几个开杀里面没有涉及到,稍微修改一下就可以实现。。加点分即可。
Option Base 1

Private Sub jose(ByVal i As Integer, ByVal far As Integer)
Dim j%, k#, n%
Dim num
ReDim arr(i) As Integer

For num = 1 To i
arr(num) = num
Next

k = 0: n = 1: j = 0

Do While j < i
If arr(n) <> 0 Then '如果孩子标志为未退场,则加入计数
k = k + 1
If k Mod far = 0 Then '把下一个退场的孩子输出
Text1.Text = Text1.Text & arr(n) & Space$(2)
DoEvents
arr(n) = 0 '给退场的孩子做标记
j = j + 1 '计算已经退场了的孩子的个数
End If
End If
n = n + 1
n = n Mod (i + 1) '如果数到一圈的末尾
If n = 0 Then n = 1 '则接着从头循环数
Loop

End Sub

Private Sub Command1_Click()
Dim ret1, ret2

Text1.Text = "孩子退场的顺序依次是: "
ret1 = Val(InputBox( "请输入孩子的个数 ", "输入 ", 0))
ret2 = Val(InputBox( "请输入循环的距离 ", "输入 ", 0))

If ret1 <= ret2 Or ret2 = 0 Or ret1 > 5000 Then '输入太大的值并没有太大的意义
MsgBox "输入不是很规范,请重新输入! "
Exit Sub
End If

jose ret1, ret2
MsgBox "完毕! "

End Sub

热点排行