有X个人在一个荒岛上,有一个竹排 但竹排只能载一个人走,于是这群人通过商量制定了一个游戏:把Y作为倒霉数字,这群人从1开始报数,凡是报到Y的倍数这个人就会被淘汰,最后只会留下一个人才能乘竹排离开荒岛。
       写程序:提示用户输入这群人的个数和倒霉数字,最后输出最后能够坐竹离开荒岛的人是第几有X个人在一个荒岛上,有一个竹排 但竹排只能载一个人走,于是这群人通过商量制定了一个游戏:把Y作为倒霉数字,这群人从1开始报数,凡是报到Y的倍数整个人就会被淘汰,最后只会留下一个人才能乘竹排离开荒岛。
写程序:提示用户输入这群人的个数和倒霉数字,最后输出最后能够坐竹离开荒岛的人是第几 ?

解决方案 »

  1.   

    约瑟夫问题--java代码(链表解决) 我用Java解决约瑟夫环问题
      

  2.   

    写的好玩的,用LIST模拟约瑟夫环的踢人过程~~
    网上啥面向对象的,数组的一大堆,楼主自己搜吧public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("X");
    int x = in.nextInt();
    System.err.println("Y");
    int y = in.nextInt();
    List<Integer> menbers = new ArrayList<Integer>();
    for(int i = 0;i<x;i++){
    menbers.add(Integer.valueOf(i+1));
    }
    int currNum = 1;
    int currIndex = 0;
    while(menbers.size()>1){
    if(currNum%y == 0){
    System.err.println(menbers.remove(currIndex)+"号出局...");
    if(currIndex == menbers.size()){
    currIndex = 0;
    }
    }else {
    if(currIndex <menbers.size()-1){
    currIndex++;
    }else if(currIndex == menbers.size()-1){
    currIndex = 0;
    }
    }
    currNum++;
    }
    System.err.println("胜利者:"+menbers.get(0));
    }
      

  3.   

    刚才逻辑判重了,用这个吧....public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("X");
    int x = in.nextInt();
    System.err.println("Y");
    int y = in.nextInt();
    List<Integer> menbers = new ArrayList<Integer>();
    for(int i = 0;i<x;i++){
    menbers.add(Integer.valueOf(i+1));
    }
    int currNum = 1;
    int currIndex = 0;
    while(menbers.size()>1){
    if(currNum%y == 0){
    System.err.println(menbers.remove(currIndex)+"号出局...");
    }else {
    currIndex++;
    }
    if(currIndex == menbers.size()){
    currIndex = 0;
    }
    currNum++;
    }
    System.err.println("胜利者:"+menbers.get(0));
    }
      

  4.   

    public static void main(String[] args){

    Scanner in=new Scanner(System.in);
    System.out.println("请输入人数");
    int count=in.nextInt();
    System.out.println("请输入倒霉数");
    int num=in.nextInt();
    boolean[] arr=new boolean[count];
    for(int i=0;i<arr.length;i++){
    arr[i]=true;

    }
    int n=0;
    int liftcount=arr.length;
    int index=0;
    while(liftcount>1){
    if(arr[index]==true){
    n++;
    if(n%num==0){
    System.out.println(index+1+"出局");
    arr[index]=false;
    liftcount--;
    }
    }
    index++;
    if(index==arr.length){
        index=0;
    }
    }
    for(int i=0;i<arr.length;i++){
    if(arr[i]==true)
    System.out.println(i+1+"最后留下");
     }
    }