没想到学C++的第三天就遇到了这样猥琐的约瑟夫(Josephus)问题。
说n个人围坐成一圈,从1开始顺序编号;游戏开始,从第一个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的序号。
而提示也只是什么计数器什么玩意的。想了半天因为还没有学C++的队列,所以逻辑上也理不清。就决定先用Java去做,所以本文章为Java类别。
好吧。我来看看简单难懂的提示。算了,对于本题并没有什么帮助,不用看了。下面是实现。view plaincopy to clipboardprint?
import java.util.ArrayList;;
public class josephus {
/**
* @param args
*/
public static void main(String[] args) {
int m=5;//报到m的人退出圈外
int total=10;//总人数
int list_tmp[] = new int[total];//创建数组,我不知道java是否有动态一些的数组,比如不用分配空间什么的。这里1代表在场,0则代表出局。
int list[] = setCollect(list_tmp);//赋数组初始值,很奇怪我竟然以为java的数组可以一值多赋,写多js了。 !--判断阅读权限-->!--判断是否已经扣点--> |