题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
1
package
com.weidu.algorithms;
2
3 import java.util.Arrays;
4 import java.util.Scanner;
5
6 /** */ /**
7 * @Title:
8 * @Description:
9 * @author Afei
10 * @date: 日期:2012-6-10 时间:下午05:41:04
12 * @version:1.0
13*/
14 public class Qu3 {
15
16/** *//**
17 * 功能说明:1、 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,<br>
18 * 问最后留下的是原来第几号的那位。
19 *
20 * @Afei 2012-6-10
21 * @param args
22*/
23
24public static void main(String[] args) {
25// TODO Auto-generated method stub
26 Scanner input = new Scanner(System.in);
27 System.out.print("请输入总人数:");
28int p = input.nextInt();
29/** *//**** 初始化人员 ***/
30boolean[] per = new boolean[p];// boolean数组表示站成一圈的人,false表示退出
31 for (int i = 0; i < per.length; i++) {
32 per[i] = true;
33 }
34
35/** *//**** 报号 ***/
36int t = 0, len = per.length;
37while (len > 1) {
38for (int i = 0; i < per.length; i++) {
39
40if (per[i]) {
41 t++;
42if (t == 3) {
43 t = 0;
44 per[i] = false;
45 len--;
46 }
47 }
48 }
49 }
50/** *//***** 结果 *****/
51 System.out.println("最后的情况:" + Arrays.toString(per));
52for (int i = 0; i < per.length; i++) {
53if (per[i]) {
54 System.out.println("原来喊的数:" + (i + 1) % 3);
55 }
56 }
57 }
58}
59
2
3 import java.util.Arrays;
4 import java.util.Scanner;
5
6 /** */ /**
7 * @Title:
8 * @Description:
9 * @author Afei
10 * @date: 日期:2012-6-10 时间:下午05:41:04
12 * @version:1.0
13*/
14 public class Qu3 {
15
16/** *//**
17 * 功能说明:1、 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,<br>
18 * 问最后留下的是原来第几号的那位。
19 *
20 * @Afei 2012-6-10
21 * @param args
22*/
23
24public static void main(String[] args) {
25// TODO Auto-generated method stub
26 Scanner input = new Scanner(System.in);
27 System.out.print("请输入总人数:");
28int p = input.nextInt();
29/** *//**** 初始化人员 ***/
30boolean[] per = new boolean[p];// boolean数组表示站成一圈的人,false表示退出
31 for (int i = 0; i < per.length; i++) {
32 per[i] = true;
33 }
34
35/** *//**** 报号 ***/
36int t = 0, len = per.length;
37while (len > 1) {
38for (int i = 0; i < per.length; i++) {
39
40if (per[i]) {
41 t++;
42if (t == 3) {
43 t = 0;
44 per[i] = false;
45 len--;
46 }
47 }
48 }
49 }
50/** *//***** 结果 *****/
51 System.out.println("最后的情况:" + Arrays.toString(per));
52for (int i = 0; i < per.length; i++) {
53if (per[i]) {
54 System.out.println("原来喊的数:" + (i + 1) % 3);
55 }
56 }
57 }
58}
59