本帖最后由 hhmm665544 于 2014-4-30 19:21 编辑
- package com.itheima.jishu;
- //2题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- import java.util.Scanner;
- public class Test2 {
- public static void main(String[] args) {
- System.out.println("请输入n:");
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- sc.close();
- //设置在队列中的为真,不在队列的为假,当数组中最后一个为真的时候,得到他的下标,然后加上1;
- int inList = n;//在圈内的人数
- int index = 0;//下标
- int num = 0;//报数从1开始,当能被三整除就退出圈子,inList--
- int last = 0;
- boolean[] list = new boolean[n];
- for(int i=0;i<n;i++){
- list[i] = true;
- }
- while(inList > 1){
- if(list[index]){
- if((++num)%3==0){
- list[index] = false;
- inList--;
- }
- }
-
- index++;
-
- if(index == n){
- index = 0;
- }
-
- }
- for(int i=0;i<n;i++){
- if(list[i])
- last = i + 1;
- }
-
- System.out.println("最后留下的是原来第"+last+"号的那位");
- }
- }
复制代码
|