1、问题描述:
n我的围成一个圈,编号为1~n,从第一号开始报数,报到3的倍数的人离开,一直数下去,直到最后只有一我的,求此人编号。
2、问题提示:
使用一维数组,数组元素初始为1,从1开始把数字放进数组空间,若数组元素为3的倍数,则把其置0,循环下去直到计数器(counter)减为1,则跳出循环并输出其数组下标
java
- import java.util.Scanner;
-
- public class Test {
-
-
-
-
- public static void main(String[] args) {
-
-
- System.out.println("请输入一个数字:");
- Scanner scan = new Scanner(System.in);
- int n = scan.nextInt();
- int counter = n;
- int num = 1;
- int[] array = new int[n];
-
- for (int i = 0; i < array.length; i++) {
- array[i] = 1;
- }
- while (counter > 1) {
- for (int j = 0; j < array.length; j++) {
- if (array[j] != 0) {
- array[j] = num;
- if (num % 3 == 0) {
- array[j] = 0;
- counter = counter - 1;
- if (counter == 1) {
- break;
- }
- }
- num = num + 1;
- }
- }
- }
- for (int k = 0; k < n; k++) {
- if (array[k] != 0) {
- System.out.println("最后赢家的编号为:" + (k + 1));
- }
- }
-
- }
-
- }