设n个人围坐在- -个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,..... 如此反复直到所有的人全部出局为止。下面要解决的Josephus问题是:对于任意给定的n,s和m,求出这n个人的出局序列。请以n=9,s=1,m=5为例,人工模拟Josephus的求解过程以求得问题的解。
举一反三
- 有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数。如此进行下去直到所有的人都出圈为止。求n个人出圈的顺序。要求:人数和出圈号码通过用户输入得到。
- 有n个人围成一圈,按序列编号。从第1个人开始报数,数到m时该人退出,并且下一个从1重新开始报数,求出出圈人的顺序(n>m,例如n=20,m=7)。请编写一个通用程序。
- 有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(m<n)的人退出圈子,下一个人从1开始报数,报到的人退出圈子。如此下去,直到留下最后一个人。编写程序,输入整数n和m,并按退出顺序输出退出圈子的人的编号。
- 约瑟夫问题。有n个人,编号为1,2,…,n,围成一个圆圈,按照顺时针方向从编号为k的人从1开始报数,报数为m的人出列,他的下一个人重新开始从1报数,数到m的人出列,一直这样重复下去,直到所有的人都出列。要求编写一个算法,输入n、k和m,依次输出每次出列人的编号。例如,输入9、3、5,则输出结果为7、3、9、6、5、8、2、4、1.要求编写完成程序实现,并粘贴源代码,上传运行结果截图。
- 有n个人围成一圈,顺序排号,从第1个人开始报数,从1报到m,凡报到m的人退出圈子,问最后留下的是原来第几号的人?下列函数完成上述处理,其中m、n的(m