Posted on 2006-03-05 14:52
Tauruser 阅读(1722)
评论(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解决办法