五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
2016-09-09 11:13
435 查看
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下
的是原来第几号的那位。
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下
的是原来第几号的那位。
import java.util.Arrays; import java.util.Scanner; import net.mindview.util.Print; public class Test37 { public static void main(String[] args) { System.out.println("-------------'%'测试-------------"); System.out.println("'%' 可以制造出循环的效果:"); for (int i = 1; i < 10;i++ ) { System.out.println(i%4); } System.out.println("-------------测试结束-------------"); System.out.println(); System.out.println(); System.out.println("-------------测试开始-------------"); for (int i = 5; i < 40;i++ ) { findLast(i); } System.out.println("-------------测试结束-------------"); // System.out.println("请输入人数:"); // Scanner s = new Scanner(System.in); // int n = s.nextInt(); // findLast(n); } private static void findLast(int n) { int[] arr = new int ; boolean[] people = new boolean ; Arrays.fill(people,true); int i = 0,j = 0, k = 1, m = n; for(;j<m; i = ++i%m ,k = ++k%4){ if(k==0){ //去除k=0的时候,只留下值为1,2,3的k, i--; //因为k这时有四个数再循环,当k=0时,当前报数的重报,即下个for循环还是当前报数人 continue; } if(people[i]){ if(k%3 == 0){ arr[j] = i+1; j++; n--; people[i] = false; } }else{ k--;//如果已经将该人设置为false,则下个人还报当前这个k值,所以k--,与下个for循环的k++抵消 } } print(arr); } // 打印数组 public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } }输出结果:
-------------'%'测试------------- '%' 可以制造出循环的效果: 1 2 3 0 1 2 3 0 1 -------------测试结束------------- -------------测试开始------------- 3 1 5 2 4 3 6 4 2 5 1 3 6 2 7 5 1 4 3 6 1 5 2 8 4 7 3 6 9 4 8 5 2 7 1 3 6 9 2 7 1 8 5 10 4 3 6 9 1 5 10 4 11 8 2 7 3 6 9 12 4 8 1 7 2 11 5 10 3 6 9 12 2 7 11 4 10 5 1 8 13 3 6 9 12 1 5 10 14 7 13 8 4 11 2 3 6 9 12 15 4 8 13 2 10 1 11 7 14 5 3 6 9 12 15 2 7 11 16 5 13 4 14 10 1 8 3 6 9 12 15 1 5 10 14 2 8 16 7 17 13 4 11 3 6 9 12 15 18 4 8 13 17 5 11 1 10 2 16 7 14 3 6 9 12 15 18 2 7 11 16 1 8 14 4 13 5 19 10 17 3 6 9 12 15 18 1 5 10 14 19 4 11 17 7 16 8 2 13 20 3 6 9 12 15 18 21 4 8 13 17 1 7 14 20 10 19 11 5 16 2 3 6 9 12 15 18 21 2 7 11 16 20 4 10 17 1 13 22 14 8 19 5 3 6 9 12 15 18 21 1 5 10 14 19 23 7 13 20 4 16 2 17 11 22 8 3 6 9 12 15 18 21 24 4 8 13 17 22 2 10 16 23 7 19 5 20 14 1 11 3 6 9 12 15 18 21 24 2 7 11 16 20 25 5 13 19 1 10 22 8 23 17 4 14 3 6 9 12 15 18 21 24 1 5 10 14 19 23 2 8 16 22 4 13 25 11 26 20 7 17 3 6 9 12 15 18 21 24 27 4 8 13 17 22 26 5 11 19 25 7 16 1 14 2 23 10 20 3 6 9 12 15 18 21 24 27 2 7 11 16 20 25 1 8 14 22 28 10 19 4 17 5 26 13 23 3 6 9 12 15 18 21 24 27 1 5 10 14 19 23 28 4 11 17 25 2 13 22 7 20 8 29 16 26 3 6 9 12 15 18 21 24 27 30 4 8 13 17 22 26 1 7 14 20 28 5 16 25 10 23 11 2 19 29 3 6 9 12 15 18 21 24 27 30 2 7 11 16 20 25 29 4 10 17 23 31 8 19 28 13 26 14 5 22 1 3 6 9 12 15 18 21 24 27 30 1 5 10 14 19 23 28 32 7 13 20 26 2 11 22 31 16 29 17 8 25 4 3 6 9 12 15 18 21 24 27 30 33 4 8 13 17 22 26 31 2 10 16 23 29 5 14 25 1 19 32 20 11 28 7 3 6 9 12 15 18 21 24 27 30 33 2 7 11 16 20 25 29 34 5 13 19 26 32 8 17 28 4 22 1 23 14 31 10 3 6 9 12 15 18 21 24 27 30 33 1 5 10 14 19 23 28 32 2 8 16 22 29 35 11 20 31 7 25 4 26 17 34 13 3 6 9 12 15 18 21 24 27 30 33 36 4 8 13 17 22 26 31 35 5 11 19 25 32 2 14 23 34 10 28 7 29 20 1 16 3 6 9 12 15 18 21 24 27 30 33 36 2 7 11 16 20 25 29 34 1 8 14 22 28 35 5 17 26 37 13 31 10 32 23 4 19 3 6 9 12 15 18 21 24 27 30 33 36 1 5 10 14 19 23 28 32 37 4 11 17 25 31 38 8 20 29 2 16 34 13 35 26 7 22 3 6 9 12 15 18 21 24 27 30 33 36 39 4 8 13 17 22 26 31 35 1 7 14 20 28 34 2 11 23 32 5 19 37 16 38 29 10 25 -------------测试结束-------------
相关文章推荐
- 【程序37】Test3Quit.java 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最 //后留下 的是原来第几号的那位。
- 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数 (从1到3报数),凡报到3的人退出圈子,问最后留下的是 原来第几号的那位。
- Java编程之有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子
- Java编程之有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子
- Java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。
- C语言题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
- java 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- Java 写有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
- python 实现:题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- Java 写有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数), 凡报到3的人退出圈子,问最后留下的人原来排在第几号。
- 有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
- 面试题:有20个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子
- 有n(0<n<=50,且n为整数)个人围成一圈,顺序排号(1,2,…,n)。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数)凡报到3的人退出圈子问最后留下1个人的是原来第几号的那位。
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。
- 有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序
- 有15个人围成一圈,顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人 C#版
- 有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。