Java经典算法40例(三十七)

来源:互联网 发布:sqsxfree类似软件 编辑:程序博客网 时间:2024/05/22 16:44

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

代码:

import java.util.Scanner;/** * 围圈 * @author cheng * */public class ThirtySeven {    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        System.out.println("请输入总人数");        int n=scanner.nextInt();  //玩游戏的人数        int[] array=new int[n];        int num=0; //被淘汰的人数        int k=0;        int j=0;        for(int i=0;i<n;i++){            array[i]=i+1;        }        while(num<n-1){            if(array[j]!=0){                k++;            }            if(k==3){                array[j]=0;                num++;                k=0;            }            j++;            if(j==n){                j=0;            }        }        System.out.print("最后留下的是原来的");        for(int i=0;i<n;i++){            if(array[i]!=0){                System.out.print(array[i]);            }        }        scanner.close();    }}

输出结果:

请输入总人数5最后留下的是原来的4
原创粉丝点击