Tauruser

Enjoy Every Day
posts - 34, comments - 95, trackbacks - 0, articles - 5
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Josephus问题

Posted on 2006-03-05 14:52 Tauruser 阅读(1707) 评论(0)  编辑 收藏 引用 所属分类: 算法与数据结构
摘一下题目:
  试用递归和非递归的方法编写程序解决Josephus问题:设有n个人围坐一个圆桌周围,,现从第S人开始报数,数到第m的人出列,然后从出列的下一个重新开始报数,数列的第m个人又出列……如此重复,直到所有的人全部出列为止。对任意给定的n、s、m,求按出列次序得到的n个人员的顺序表。

使用两种方法:
  方法1:用整数i来代替pi,将初始序列看成一个整数序列存储在向量p中,pi出列,将p[i+1],……,p[n]前移一个元素,将pi放入p[n]中,最后出列放在p[1]中,再作逆序。
  方法2:每出列一个元素存入另一个向量中,不移位,设置标志,全部出列后,打印出出列顺序表。

详细解决办法请点下面的链接。
      Josephus问题非递归方法1解决办法
      Josephus问题递归方法1解决办法
      Josephus问题非递归方法2解决办法
      Josephus问题递归方法2解决办法

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理