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

来源:互联网 发布:淘宝售后电话是多少 编辑:程序博客网 时间:2024/05/12 06:41
package december;import java.util.Scanner;/*       * 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 */public class Lianxi_8 {public static int lastPeople(int n) {boolean[] peoples = new boolean[n];for(int i = 0;i < peoples.length;i++){peoples[i] = true;}int leftCount = n;int numCount = 0;int index = 0;while(leftCount > 1){if(peoples[index] == true){numCount++;}if(numCount == 3){numCount = 0;peoples[index] = false;leftCount--;}index++;if(index == n){index = 0;}}int result = 1;for(boolean flag : peoples){if(flag == true){break;}result++;}return result;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入围成一圈人的个数:");int n = sc.nextInt();int result = lastPeople(n);System.out.println("剩下的最后一个人编号为:"+result);sc.close();}}

0 0