您的位置:程序门 -> vb -> 基础类



求解问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求解问题[已结贴,结贴人:ksjfdslk]
发表于:2007-05-12 11:17:53 楼主
能帮着编个程序吗?

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

请编完联系我:qq   290695839
发表于:2007-05-12 14:49:161楼 得分:30
这个不就是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
发表于:2007-05-12 15:31:052楼 得分:0
该回复于2007-12-28 18:04:11被管理员或版主删除


快速检索

最新资讯
热门点击