本系列文章在 https://github.com/freestylefly/javaStudy 持(jing)续(chang)更(duan)新(geng)中,欢迎有兴趣的童鞋们关注。
这是一道算法面试题1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n;// 人数
int m;// 报名数(报到的出列)
System.out.print("请输入n:");
n = input.nextInt();
System.out.print("请输入m:");
m = input.nextInt();
int num = n;// 剩余人数
int flag = 0;// 标记报名数,每报一次就加1
int[] arr = new int[n];// 数组,刚开始所有数都为0,0代表存货,1代表删除该元素
// 只要剩余人数大于等于1个人,就一直循环
while (num >1) {
for (int i = 0; i < n; i++) {
if (arr[i] == 0) {
flag++;
}
if (flag == m) {
arr[i] = 1;
System.out.println("第" + (i + 1) + "次出列:编号" + (i+1));
flag=0;
num--;
}
}
}
for (int i = 0; i < n; i++) {
//最后编号为0代表存活的
if(arr[i]==0) {
System.out.println("最后剩下:" + (i+1));
}
}
}
}
方式二:
1 | import java.util.LinkedList; |