38 个解决方案
#1
问题是不是报数的人只1,2,3的报数???
#2
不是。。。就是一般的数数,从1开始数,然后数到3的倍数的人就离开圈子。。。 所以首先都不知道一共要循环一次,就是假如说数完第一圈 从1 开始的 100个人过后 再转到第一个人的时候就数101,以此类推,只要是3倍数的人就出去,直到最后剩下一个!
#3
约瑟夫环问题
#4
不懂。。。我才初学JAVA不久。
#5
百度一下这个问题就OK了
#6
不过你这样想也可以的,就是100个人都喊1,2,3 喊到3的人就出去 , 问题就在于第二圈和后面的时候原来喊的人数字会有变化 比方说第一圈的时候 喊99的人喊3 那么第100个人的时候就喊1 原来第一圈喊1的人就喊2 了。。就是这个让我头疼!
#7
兄弟,强哦,压秒提交。。
#8
public static int lastValue(List list, int n){
while(true){
if(list.size() == 1)
break;
for(int i=0;i<n-1;i++){
list.add(list.remove(0));
}
list.remove(0);
}
return (Integer)list.get(0);
}
冒失这个题目我以前笔试过
#9
你就设立一个100大小的数组,初始值为1,然后三个三个的循环遍历,每当数到3,然后把数组的值置0,输出剩下的最后一个数字的下标。
//我的问题是。。。最后怎么会只剩下一个人哦。。当最后是两个人的时候你怎么剔除?因为2不是3的倍数啊
//我的问题是。。。最后怎么会只剩下一个人哦。。当最后是两个人的时候你怎么剔除?因为2不是3的倍数啊
#10
方法很多 可以用基本的数组解决 就是麻烦点 ,也可以用集合框架中的类来解决
#11
2虽然不是3的倍数,但是3就是3的倍数了撒。。假如剩下2个人,第一个人喊1 ,第二个人喊2,那么第一个人就喊3撒,。他就出去了。。还是剩下一个!
#12
额。昏了昏了。恩。这样就明白了。弄两个循环,一个重复遍历100的数组,一个就从1-3数。就可以了。
#13
我帮你到网上找了一段代码,正好自己也可以研究一下这个定律,感觉这段代码还算不错,大家一起学习学习!
import java.util.Scanner;
public class Test {
public static void main(String[] args){
System.out.println("程序说明如下:");
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数," +
"直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
// 提示输入总人数
System.out.println("请输入做这个游戏的总人数:");
Scanner sca=new Scanner(System.in);
int m=sca.nextInt();
// 提示输入要出圈的数值
System.out.println("请输入要出圈的数值:");
int n=sca.nextInt();
System.out.println("按出圈的次序输出序号:");
// 创建有m个值的数组
int[] a=new int[m];
// 初始长度,以后出圈一个,长度就减一
int len=m;
// 给数组赋值
for(int i=0;i<a.length;i++)
a[i]=i+1;
// i为元素下表,j代表当前要报的数
int i=0;
int j=1;
while(len>0){
if(a[i%m]>0){
if(j%n==0){// 找到要出圈的人,并把圈中人数减一
System.out.print(a[i%m]+" ");
a[i%m]=-1;
j=1;
i++;
len--;
}else{
i++;
j++;
}
}else{// 遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
i++;
}
}
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args){
System.out.println("程序说明如下:");
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数," +
"直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
// 提示输入总人数
System.out.println("请输入做这个游戏的总人数:");
Scanner sca=new Scanner(System.in);
int m=sca.nextInt();
// 提示输入要出圈的数值
System.out.println("请输入要出圈的数值:");
int n=sca.nextInt();
System.out.println("按出圈的次序输出序号:");
// 创建有m个值的数组
int[] a=new int[m];
// 初始长度,以后出圈一个,长度就减一
int len=m;
// 给数组赋值
for(int i=0;i<a.length;i++)
a[i]=i+1;
// i为元素下表,j代表当前要报的数
int i=0;
int j=1;
while(len>0){
if(a[i%m]>0){
if(j%n==0){// 找到要出圈的人,并把圈中人数减一
System.out.print(a[i%m]+" ");
a[i%m]=-1;
j=1;
i++;
len--;
}else{
i++;
j++;
}
}else{// 遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
i++;
}
}
}
}
#14
这个我好好研究下!主要初学JAVA不久。。。这个循环貌似听过,但是就是自己没有遇到过,现在遇到了 感觉好难
#16
import java.util.Vector;
public class Loop {
public static void main(String[] args) {
Vector<Integer> man = new Vector<Integer>(0);
for (int i=0;i<100;i++) {
man.add(i);
}
int i = 0;//用以数数
int num = 0;//用以控制数到头以后的序号翻转
while (man.size() > 1) {
i++;
if (i%3 == 0) {
System.out.println("移除:" + man.get(num));
man.remove(num);//3的倍数时移除该元素
num--;//移除之后的序号偏移
}
num++;
if (num >= man.size()) {
num -= man.size();
}
}
System.out.println("剩下:" + man.get(0));
}
}
#17
public static int getLastone(int total, int step) {
int r = 0;
for (int i = 2; i <= total; i++)
r = (r + step) % i;
return r;
}
这么长代码就够了
#18
学习中呢。谢谢啊。
#19
//total 为总人数, step 为喊到 step 倍数的人退出, 方法返回的是最后一个人的原编号
public static int getLastone(int total, int step) {
int r = 0;
for (int i = 2; i <= total; i++)
r = (r + step) % i;
return r;
}
#20
很好很强大.. 正好研究下
#21
这个貌似有问题啊。。假如说是9个人一个桌子,最后出去的应该是8号。但是 用这个方法算的最后出去的是1号
#22
。。。。算错了 不好意思!
#23
这个r一开始赋值为0,是不是说是从0号人开始?i 一开始赋值为2 是为什么啊?
#24
这是什么算法?
#25
#26
class Kid {
int num;
Kid left;
Kid right;
}
class Circle {
Kid kid[] = new Kid[100];
public void inCricle() {
for(int i=0;i<kid.length;i++) {
kid[i]=new Kid();
kid[i].num = i;
}
for(int i=1;i<kid.length-1;i++) {
kid[i].left=kid[i-1];
kid[i].right=kid[i+1];
}
kid[0].left=kid[kid.length-1];
kid[0].right=kid[1];
kid[99].left=kid[98];
kid[kid.length-1].right=kid[0];
}
public int getIndex() {
int count = 0 ;
while(true) {
for(int i=0;i<kid.length;i++) {
if(kid[i].left!=null&&kid[i].right!=null) {
count++;
}
if(count==3) {
kid[i].left.right=kid[i].right;
kid[i].right.left=kid[i].left;
kid[i].left=null;
kid[i].right=null;
count=0;
}
if((kid[i].left==kid[i])&&(kid[i].right==kid[i])) {
return kid[i].num;
}
}
}
}
public static void main(String []args) {
Circle c = new Circle();
c.inCricle();
System.out.println(c.getIndex());
}
}
int num;
Kid left;
Kid right;
}
class Circle {
Kid kid[] = new Kid[100];
public void inCricle() {
for(int i=0;i<kid.length;i++) {
kid[i]=new Kid();
kid[i].num = i;
}
for(int i=1;i<kid.length-1;i++) {
kid[i].left=kid[i-1];
kid[i].right=kid[i+1];
}
kid[0].left=kid[kid.length-1];
kid[0].right=kid[1];
kid[99].left=kid[98];
kid[kid.length-1].right=kid[0];
}
public int getIndex() {
int count = 0 ;
while(true) {
for(int i=0;i<kid.length;i++) {
if(kid[i].left!=null&&kid[i].right!=null) {
count++;
}
if(count==3) {
kid[i].left.right=kid[i].right;
kid[i].right.left=kid[i].left;
kid[i].left=null;
kid[i].right=null;
count=0;
}
if((kid[i].left==kid[i])&&(kid[i].right==kid[i])) {
return kid[i].num;
}
}
}
}
public static void main(String []args) {
Circle c = new Circle();
c.inCricle();
System.out.println(c.getIndex());
}
}
#27
#28
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws Exception{
ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<100;i++)
array.add(i+"");
int num=1,i=0;
while(true){
if(array.size()==1)
break;
num++;
i++;
System.out.println("I-->"+i+"array.size()-->"+array.size());
if(i==array.size())
i=0;
if(num==3){
System.out.println(array.remove(i));
i--;
num=0;
}
}
System.out.println(array.get(0));
}
}
打印结果:
I-->1array.size()-->100
I-->2array.size()-->100
2
I-->2array.size()-->99
I-->3array.size()-->99
I-->4array.size()-->99
5
I-->4array.size()-->98
I-->5array.size()-->98
I-->6array.size()-->98
8
I-->6array.size()-->97
I-->7array.size()-->97
I-->8array.size()-->97
11
I-->8array.size()-->96
I-->9array.size()-->96
I-->10array.size()-->96
14
I-->10array.size()-->95
I-->11array.size()-->95
I-->12array.size()-->95
17
I-->12array.size()-->94
I-->13array.size()-->94
I-->14array.size()-->94
20
I-->14array.size()-->93
I-->15array.size()-->93
I-->16array.size()-->93
23
I-->16array.size()-->92
I-->17array.size()-->92
I-->18array.size()-->92
26
I-->18array.size()-->91
I-->19array.size()-->91
I-->20array.size()-->91
29
I-->20array.size()-->90
I-->21array.size()-->90
I-->22array.size()-->90
32
I-->22array.size()-->89
I-->23array.size()-->89
I-->24array.size()-->89
35
I-->24array.size()-->88
I-->25array.size()-->88
I-->26array.size()-->88
38
I-->26array.size()-->87
I-->27array.size()-->87
I-->28array.size()-->87
41
I-->28array.size()-->86
I-->29array.size()-->86
I-->30array.size()-->86
44
I-->30array.size()-->85
I-->31array.size()-->85
I-->32array.size()-->85
47
I-->32array.size()-->84
I-->33array.size()-->84
I-->34array.size()-->84
50
I-->34array.size()-->83
I-->35array.size()-->83
I-->36array.size()-->83
53
I-->36array.size()-->82
I-->37array.size()-->82
I-->38array.size()-->82
56
I-->38array.size()-->81
I-->39array.size()-->81
I-->40array.size()-->81
59
I-->40array.size()-->80
I-->41array.size()-->80
I-->42array.size()-->80
62
I-->42array.size()-->79
I-->43array.size()-->79
I-->44array.size()-->79
65
I-->44array.size()-->78
I-->45array.size()-->78
I-->46array.size()-->78
68
I-->46array.size()-->77
I-->47array.size()-->77
I-->48array.size()-->77
71
I-->48array.size()-->76
I-->49array.size()-->76
I-->50array.size()-->76
74
I-->50array.size()-->75
I-->51array.size()-->75
I-->52array.size()-->75
77
I-->52array.size()-->74
I-->53array.size()-->74
I-->54array.size()-->74
80
I-->54array.size()-->73
I-->55array.size()-->73
I-->56array.size()-->73
83
I-->56array.size()-->72
I-->57array.size()-->72
I-->58array.size()-->72
86
I-->58array.size()-->71
I-->59array.size()-->71
I-->60array.size()-->71
89
I-->60array.size()-->70
I-->61array.size()-->70
I-->62array.size()-->70
92
I-->62array.size()-->69
I-->63array.size()-->69
I-->64array.size()-->69
95
I-->64array.size()-->68
I-->65array.size()-->68
I-->66array.size()-->68
98
I-->66array.size()-->67
I-->67array.size()-->67
I-->1array.size()-->67
1
I-->1array.size()-->66
I-->2array.size()-->66
I-->3array.size()-->66
6
I-->3array.size()-->65
I-->4array.size()-->65
I-->5array.size()-->65
10
I-->5array.size()-->64
I-->6array.size()-->64
I-->7array.size()-->64
15
I-->7array.size()-->63
I-->8array.size()-->63
I-->9array.size()-->63
19
I-->9array.size()-->62
I-->10array.size()-->62
I-->11array.size()-->62
24
I-->11array.size()-->61
I-->12array.size()-->61
I-->13array.size()-->61
28
I-->13array.size()-->60
I-->14array.size()-->60
I-->15array.size()-->60
33
I-->15array.size()-->59
I-->16array.size()-->59
I-->17array.size()-->59
37
I-->17array.size()-->58
I-->18array.size()-->58
I-->19array.size()-->58
42
I-->19array.size()-->57
I-->20array.size()-->57
I-->21array.size()-->57
46
I-->21array.size()-->56
I-->22array.size()-->56
I-->23array.size()-->56
51
I-->23array.size()-->55
I-->24array.size()-->55
I-->25array.size()-->55
55
I-->25array.size()-->54
I-->26array.size()-->54
I-->27array.size()-->54
60
I-->27array.size()-->53
I-->28array.size()-->53
I-->29array.size()-->53
64
I-->29array.size()-->52
I-->30array.size()-->52
I-->31array.size()-->52
69
I-->31array.size()-->51
I-->32array.size()-->51
I-->33array.size()-->51
73
I-->33array.size()-->50
I-->34array.size()-->50
I-->35array.size()-->50
78
I-->35array.size()-->49
I-->36array.size()-->49
I-->37array.size()-->49
82
I-->37array.size()-->48
I-->38array.size()-->48
I-->39array.size()-->48
87
I-->39array.size()-->47
I-->40array.size()-->47
I-->41array.size()-->47
91
I-->41array.size()-->46
I-->42array.size()-->46
I-->43array.size()-->46
96
I-->43array.size()-->45
I-->44array.size()-->45
I-->45array.size()-->45
0
I-->0array.size()-->44
I-->1array.size()-->44
I-->2array.size()-->44
7
I-->2array.size()-->43
I-->3array.size()-->43
I-->4array.size()-->43
13
I-->4array.size()-->42
I-->5array.size()-->42
I-->6array.size()-->42
21
I-->6array.size()-->41
I-->7array.size()-->41
I-->8array.size()-->41
27
I-->8array.size()-->40
I-->9array.size()-->40
I-->10array.size()-->40
34
I-->10array.size()-->39
I-->11array.size()-->39
I-->12array.size()-->39
40
I-->12array.size()-->38
I-->13array.size()-->38
I-->14array.size()-->38
48
I-->14array.size()-->37
I-->15array.size()-->37
I-->16array.size()-->37
54
I-->16array.size()-->36
I-->17array.size()-->36
I-->18array.size()-->36
61
I-->18array.size()-->35
I-->19array.size()-->35
I-->20array.size()-->35
67
I-->20array.size()-->34
I-->21array.size()-->34
I-->22array.size()-->34
75
I-->22array.size()-->33
I-->23array.size()-->33
I-->24array.size()-->33
81
I-->24array.size()-->32
I-->25array.size()-->32
I-->26array.size()-->32
88
I-->26array.size()-->31
I-->27array.size()-->31
I-->28array.size()-->31
94
I-->28array.size()-->30
I-->29array.size()-->30
I-->30array.size()-->30
3
I-->0array.size()-->29
I-->1array.size()-->29
I-->2array.size()-->29
12
I-->2array.size()-->28
I-->3array.size()-->28
I-->4array.size()-->28
22
I-->4array.size()-->27
I-->5array.size()-->27
I-->6array.size()-->27
31
I-->6array.size()-->26
I-->7array.size()-->26
I-->8array.size()-->26
43
I-->8array.size()-->25
I-->9array.size()-->25
I-->10array.size()-->25
52
I-->10array.size()-->24
I-->11array.size()-->24
I-->12array.size()-->24
63
I-->12array.size()-->23
I-->13array.size()-->23
I-->14array.size()-->23
72
I-->14array.size()-->22
I-->15array.size()-->22
I-->16array.size()-->22
84
I-->16array.size()-->21
I-->17array.size()-->21
I-->18array.size()-->21
93
I-->18array.size()-->20
I-->19array.size()-->20
I-->20array.size()-->20
4
I-->0array.size()-->19
I-->1array.size()-->19
I-->2array.size()-->19
18
I-->2array.size()-->18
I-->3array.size()-->18
I-->4array.size()-->18
36
I-->4array.size()-->17
I-->5array.size()-->17
I-->6array.size()-->17
49
I-->6array.size()-->16
I-->7array.size()-->16
I-->8array.size()-->16
66
I-->8array.size()-->15
I-->9array.size()-->15
I-->10array.size()-->15
79
I-->10array.size()-->14
I-->11array.size()-->14
I-->12array.size()-->14
97
I-->12array.size()-->13
I-->13array.size()-->13
I-->1array.size()-->13
16
I-->1array.size()-->12
I-->2array.size()-->12
I-->3array.size()-->12
39
I-->3array.size()-->11
I-->4array.size()-->11
I-->5array.size()-->11
58
I-->5array.size()-->10
I-->6array.size()-->10
I-->7array.size()-->10
85
I-->7array.size()-->9
I-->8array.size()-->9
I-->9array.size()-->9
9
I-->0array.size()-->8
I-->1array.size()-->8
I-->2array.size()-->8
45
I-->2array.size()-->7
I-->3array.size()-->7
I-->4array.size()-->7
76
I-->4array.size()-->6
I-->5array.size()-->6
I-->6array.size()-->6
25
I-->0array.size()-->5
I-->1array.size()-->5
I-->2array.size()-->5
70
I-->2array.size()-->4
I-->3array.size()-->4
I-->4array.size()-->4
30
I-->0array.size()-->3
I-->1array.size()-->3
I-->2array.size()-->3
99
I-->2array.size()-->2
I-->1array.size()-->2
I-->2array.size()-->2
57
90
最后剩下编号为90的人,有人能告诉我做对了吗?
public class Test {
public static void main(String[] args) throws Exception{
ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<100;i++)
array.add(i+"");
int num=1,i=0;
while(true){
if(array.size()==1)
break;
num++;
i++;
System.out.println("I-->"+i+"array.size()-->"+array.size());
if(i==array.size())
i=0;
if(num==3){
System.out.println(array.remove(i));
i--;
num=0;
}
}
System.out.println(array.get(0));
}
}
打印结果:
I-->1array.size()-->100
I-->2array.size()-->100
2
I-->2array.size()-->99
I-->3array.size()-->99
I-->4array.size()-->99
5
I-->4array.size()-->98
I-->5array.size()-->98
I-->6array.size()-->98
8
I-->6array.size()-->97
I-->7array.size()-->97
I-->8array.size()-->97
11
I-->8array.size()-->96
I-->9array.size()-->96
I-->10array.size()-->96
14
I-->10array.size()-->95
I-->11array.size()-->95
I-->12array.size()-->95
17
I-->12array.size()-->94
I-->13array.size()-->94
I-->14array.size()-->94
20
I-->14array.size()-->93
I-->15array.size()-->93
I-->16array.size()-->93
23
I-->16array.size()-->92
I-->17array.size()-->92
I-->18array.size()-->92
26
I-->18array.size()-->91
I-->19array.size()-->91
I-->20array.size()-->91
29
I-->20array.size()-->90
I-->21array.size()-->90
I-->22array.size()-->90
32
I-->22array.size()-->89
I-->23array.size()-->89
I-->24array.size()-->89
35
I-->24array.size()-->88
I-->25array.size()-->88
I-->26array.size()-->88
38
I-->26array.size()-->87
I-->27array.size()-->87
I-->28array.size()-->87
41
I-->28array.size()-->86
I-->29array.size()-->86
I-->30array.size()-->86
44
I-->30array.size()-->85
I-->31array.size()-->85
I-->32array.size()-->85
47
I-->32array.size()-->84
I-->33array.size()-->84
I-->34array.size()-->84
50
I-->34array.size()-->83
I-->35array.size()-->83
I-->36array.size()-->83
53
I-->36array.size()-->82
I-->37array.size()-->82
I-->38array.size()-->82
56
I-->38array.size()-->81
I-->39array.size()-->81
I-->40array.size()-->81
59
I-->40array.size()-->80
I-->41array.size()-->80
I-->42array.size()-->80
62
I-->42array.size()-->79
I-->43array.size()-->79
I-->44array.size()-->79
65
I-->44array.size()-->78
I-->45array.size()-->78
I-->46array.size()-->78
68
I-->46array.size()-->77
I-->47array.size()-->77
I-->48array.size()-->77
71
I-->48array.size()-->76
I-->49array.size()-->76
I-->50array.size()-->76
74
I-->50array.size()-->75
I-->51array.size()-->75
I-->52array.size()-->75
77
I-->52array.size()-->74
I-->53array.size()-->74
I-->54array.size()-->74
80
I-->54array.size()-->73
I-->55array.size()-->73
I-->56array.size()-->73
83
I-->56array.size()-->72
I-->57array.size()-->72
I-->58array.size()-->72
86
I-->58array.size()-->71
I-->59array.size()-->71
I-->60array.size()-->71
89
I-->60array.size()-->70
I-->61array.size()-->70
I-->62array.size()-->70
92
I-->62array.size()-->69
I-->63array.size()-->69
I-->64array.size()-->69
95
I-->64array.size()-->68
I-->65array.size()-->68
I-->66array.size()-->68
98
I-->66array.size()-->67
I-->67array.size()-->67
I-->1array.size()-->67
1
I-->1array.size()-->66
I-->2array.size()-->66
I-->3array.size()-->66
6
I-->3array.size()-->65
I-->4array.size()-->65
I-->5array.size()-->65
10
I-->5array.size()-->64
I-->6array.size()-->64
I-->7array.size()-->64
15
I-->7array.size()-->63
I-->8array.size()-->63
I-->9array.size()-->63
19
I-->9array.size()-->62
I-->10array.size()-->62
I-->11array.size()-->62
24
I-->11array.size()-->61
I-->12array.size()-->61
I-->13array.size()-->61
28
I-->13array.size()-->60
I-->14array.size()-->60
I-->15array.size()-->60
33
I-->15array.size()-->59
I-->16array.size()-->59
I-->17array.size()-->59
37
I-->17array.size()-->58
I-->18array.size()-->58
I-->19array.size()-->58
42
I-->19array.size()-->57
I-->20array.size()-->57
I-->21array.size()-->57
46
I-->21array.size()-->56
I-->22array.size()-->56
I-->23array.size()-->56
51
I-->23array.size()-->55
I-->24array.size()-->55
I-->25array.size()-->55
55
I-->25array.size()-->54
I-->26array.size()-->54
I-->27array.size()-->54
60
I-->27array.size()-->53
I-->28array.size()-->53
I-->29array.size()-->53
64
I-->29array.size()-->52
I-->30array.size()-->52
I-->31array.size()-->52
69
I-->31array.size()-->51
I-->32array.size()-->51
I-->33array.size()-->51
73
I-->33array.size()-->50
I-->34array.size()-->50
I-->35array.size()-->50
78
I-->35array.size()-->49
I-->36array.size()-->49
I-->37array.size()-->49
82
I-->37array.size()-->48
I-->38array.size()-->48
I-->39array.size()-->48
87
I-->39array.size()-->47
I-->40array.size()-->47
I-->41array.size()-->47
91
I-->41array.size()-->46
I-->42array.size()-->46
I-->43array.size()-->46
96
I-->43array.size()-->45
I-->44array.size()-->45
I-->45array.size()-->45
0
I-->0array.size()-->44
I-->1array.size()-->44
I-->2array.size()-->44
7
I-->2array.size()-->43
I-->3array.size()-->43
I-->4array.size()-->43
13
I-->4array.size()-->42
I-->5array.size()-->42
I-->6array.size()-->42
21
I-->6array.size()-->41
I-->7array.size()-->41
I-->8array.size()-->41
27
I-->8array.size()-->40
I-->9array.size()-->40
I-->10array.size()-->40
34
I-->10array.size()-->39
I-->11array.size()-->39
I-->12array.size()-->39
40
I-->12array.size()-->38
I-->13array.size()-->38
I-->14array.size()-->38
48
I-->14array.size()-->37
I-->15array.size()-->37
I-->16array.size()-->37
54
I-->16array.size()-->36
I-->17array.size()-->36
I-->18array.size()-->36
61
I-->18array.size()-->35
I-->19array.size()-->35
I-->20array.size()-->35
67
I-->20array.size()-->34
I-->21array.size()-->34
I-->22array.size()-->34
75
I-->22array.size()-->33
I-->23array.size()-->33
I-->24array.size()-->33
81
I-->24array.size()-->32
I-->25array.size()-->32
I-->26array.size()-->32
88
I-->26array.size()-->31
I-->27array.size()-->31
I-->28array.size()-->31
94
I-->28array.size()-->30
I-->29array.size()-->30
I-->30array.size()-->30
3
I-->0array.size()-->29
I-->1array.size()-->29
I-->2array.size()-->29
12
I-->2array.size()-->28
I-->3array.size()-->28
I-->4array.size()-->28
22
I-->4array.size()-->27
I-->5array.size()-->27
I-->6array.size()-->27
31
I-->6array.size()-->26
I-->7array.size()-->26
I-->8array.size()-->26
43
I-->8array.size()-->25
I-->9array.size()-->25
I-->10array.size()-->25
52
I-->10array.size()-->24
I-->11array.size()-->24
I-->12array.size()-->24
63
I-->12array.size()-->23
I-->13array.size()-->23
I-->14array.size()-->23
72
I-->14array.size()-->22
I-->15array.size()-->22
I-->16array.size()-->22
84
I-->16array.size()-->21
I-->17array.size()-->21
I-->18array.size()-->21
93
I-->18array.size()-->20
I-->19array.size()-->20
I-->20array.size()-->20
4
I-->0array.size()-->19
I-->1array.size()-->19
I-->2array.size()-->19
18
I-->2array.size()-->18
I-->3array.size()-->18
I-->4array.size()-->18
36
I-->4array.size()-->17
I-->5array.size()-->17
I-->6array.size()-->17
49
I-->6array.size()-->16
I-->7array.size()-->16
I-->8array.size()-->16
66
I-->8array.size()-->15
I-->9array.size()-->15
I-->10array.size()-->15
79
I-->10array.size()-->14
I-->11array.size()-->14
I-->12array.size()-->14
97
I-->12array.size()-->13
I-->13array.size()-->13
I-->1array.size()-->13
16
I-->1array.size()-->12
I-->2array.size()-->12
I-->3array.size()-->12
39
I-->3array.size()-->11
I-->4array.size()-->11
I-->5array.size()-->11
58
I-->5array.size()-->10
I-->6array.size()-->10
I-->7array.size()-->10
85
I-->7array.size()-->9
I-->8array.size()-->9
I-->9array.size()-->9
9
I-->0array.size()-->8
I-->1array.size()-->8
I-->2array.size()-->8
45
I-->2array.size()-->7
I-->3array.size()-->7
I-->4array.size()-->7
76
I-->4array.size()-->6
I-->5array.size()-->6
I-->6array.size()-->6
25
I-->0array.size()-->5
I-->1array.size()-->5
I-->2array.size()-->5
70
I-->2array.size()-->4
I-->3array.size()-->4
I-->4array.size()-->4
30
I-->0array.size()-->3
I-->1array.size()-->3
I-->2array.size()-->3
99
I-->2array.size()-->2
I-->1array.size()-->2
I-->2array.size()-->2
57
90
最后剩下编号为90的人,有人能告诉我做对了吗?
#29
r = 0; 只是一个初始化而已, 不初始化后边不让 return 其实没实际意义
i = 2 开始 是从数学的角度推算来的
#30
约瑟夫环 具体怎么我也没看过
#31
public class Count3Quit {
public static void main(String[] args) {
boolean[] arr = new boolean[500];
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount>1) {
if(arr[index]==true) {
countNum++;
if(countNum == 3) {
countNum = 0;
leftCount--;
arr[index] = false;
}
}
index ++;
if(index == arr.length ) {
index = 0;
}
}
for(int i=0; i<arr.length ;i++) {
if(arr[i] == true) {
System.out.println(i);
}
}
}
}
public static void main(String[] args) {
boolean[] arr = new boolean[500];
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount>1) {
if(arr[index]==true) {
countNum++;
if(countNum == 3) {
countNum = 0;
leftCount--;
arr[index] = false;
}
}
index ++;
if(index == arr.length ) {
index = 0;
}
}
for(int i=0; i<arr.length ;i++) {
if(arr[i] == true) {
System.out.println(i);
}
}
}
}
#32
具体实现代码如下:
public class Quit3 {
public static void main(String[] args) {
boolean[] a = new boolean[100];
for(int i=0;i<a.length;i++) {
a[i] = true;
}
int count = 0;
int index = 0;
int NumLength = a.length;
while(NumLength >1) {
if(a[index] == true) {
count ++;
if(count==3) {
count=0;
a[index]=false;
NumLength --;
}
}
index ++;
if(index == a.length) {
index = 0;
}
}
for(int i=0;i<a.length;i++) {
if(a[i] == true) {
System.out.println(i);
}
}
}
}
#33
完全可以使用ArrayList,增添或者删除内部元素(相当于数据结构中的链表);
#34
我得出的结果跟你一样。我的代码:
/**
* 思路:0-99赋值,每个人都喊口号(p),如果口号是3的倍数,则赋值为 -1,即为出圈,同时记录出圈人的个数(count),
* 首先判断是不是出圈了,没有出圈则看口号是不是3的倍数,是则出圈,否则继续喊口号(p++),如果出圈了,则不喊口号(p--)
* 因为每次都是先喊口号,再判断出没出圈,所以当喊完口号后发现自己是出圈的,所以p--,就相当于自己没有喊口号
*/
public class Array {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int length =100; //数的个数
int a[] = new int[length]; //存放数的数组
//初始化
for(int i = 0;i <length;i++){
a[i] = i;
}
int p = 1; //计数器,一直增加,相当于口号
int k = 0; //数组下标
int count = 0; //用于记录出圈的个数
while(true){
k = k%length;
//判断是否出圈
if(a[k] != -1){
//口号是不是3的倍数
if( (p%3) == 0){
a[k]=-1;
count ++;
}
}else{
//出圈了,不喊口号
p--;
}
//判断是不是倒数第二个出圈的,是则break掉
if(count <length-1 ){
p++;
k++;
}else{
break;
}
}
//找出最后一个人
for(int i = 0;i <length;i++){
if(a[i] != -1){
System.out.println(a[i]);
}
}
}
}
#35
class Test
{
public static void main(String[] args)
{
int count = 100;
//剩余人数
int leavings = count;
int[] all = new int[count];
//index人物编号,counter报数
int index = 0, counter = 0;
while (true)
{
//人物对应的值为-1表示出局
if (all[index] != -1)
{
all[index] = index+1;
counter++;
}
if (counter%3 == 0)
{
if (--leavings == 1)
{
System.out.println(all[index]);
break;
}
all[index] = -1;
}
index++;
if (index == count-1)
{
index = 0;
}
}
}
}
#36
来学习学习吧, 呵呵
#37
public class Test
{
public static void main(String[] args)
{
// count人物总数,index人物编号,counter报数
int count = 100, index = 0, counter = 0;
// 剩余人数
int leavings = count;
// 圈
int[] circle = new int[count];
System.out.println("人物编号 报数");
while (true)
{
// 排的圈里的人物对应的值为-1表示出局
if (circle[index] != -1)
{
circle[index] = index + 1;
System.out.printf("%4d\t%3d\n", index, ++counter);
}
if (counter % 3 == 0 && circle[index] != -1)
{
if (leavings-- == 1)
{
System.out.printf("最后一个:\n%4d\t%3d\n", index, counter);
break;
}
circle[index] = -1;
}
if (++index == count)
{
System.out.println("剩余人数:" + leavings);
index = 0;
}
}
}
}
最后结果是90
#38
谢啦,我已经结了!
#1
问题是不是报数的人只1,2,3的报数???
#2
不是。。。就是一般的数数,从1开始数,然后数到3的倍数的人就离开圈子。。。 所以首先都不知道一共要循环一次,就是假如说数完第一圈 从1 开始的 100个人过后 再转到第一个人的时候就数101,以此类推,只要是3倍数的人就出去,直到最后剩下一个!
#3
约瑟夫环问题
#4
不懂。。。我才初学JAVA不久。
#5
百度一下这个问题就OK了
#6
不过你这样想也可以的,就是100个人都喊1,2,3 喊到3的人就出去 , 问题就在于第二圈和后面的时候原来喊的人数字会有变化 比方说第一圈的时候 喊99的人喊3 那么第100个人的时候就喊1 原来第一圈喊1的人就喊2 了。。就是这个让我头疼!
#7
兄弟,强哦,压秒提交。。
#8
public static int lastValue(List list, int n){
while(true){
if(list.size() == 1)
break;
for(int i=0;i<n-1;i++){
list.add(list.remove(0));
}
list.remove(0);
}
return (Integer)list.get(0);
}
冒失这个题目我以前笔试过
#9
你就设立一个100大小的数组,初始值为1,然后三个三个的循环遍历,每当数到3,然后把数组的值置0,输出剩下的最后一个数字的下标。
//我的问题是。。。最后怎么会只剩下一个人哦。。当最后是两个人的时候你怎么剔除?因为2不是3的倍数啊
//我的问题是。。。最后怎么会只剩下一个人哦。。当最后是两个人的时候你怎么剔除?因为2不是3的倍数啊
#10
方法很多 可以用基本的数组解决 就是麻烦点 ,也可以用集合框架中的类来解决
#11
2虽然不是3的倍数,但是3就是3的倍数了撒。。假如剩下2个人,第一个人喊1 ,第二个人喊2,那么第一个人就喊3撒,。他就出去了。。还是剩下一个!
#12
额。昏了昏了。恩。这样就明白了。弄两个循环,一个重复遍历100的数组,一个就从1-3数。就可以了。
#13
我帮你到网上找了一段代码,正好自己也可以研究一下这个定律,感觉这段代码还算不错,大家一起学习学习!
import java.util.Scanner;
public class Test {
public static void main(String[] args){
System.out.println("程序说明如下:");
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数," +
"直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
// 提示输入总人数
System.out.println("请输入做这个游戏的总人数:");
Scanner sca=new Scanner(System.in);
int m=sca.nextInt();
// 提示输入要出圈的数值
System.out.println("请输入要出圈的数值:");
int n=sca.nextInt();
System.out.println("按出圈的次序输出序号:");
// 创建有m个值的数组
int[] a=new int[m];
// 初始长度,以后出圈一个,长度就减一
int len=m;
// 给数组赋值
for(int i=0;i<a.length;i++)
a[i]=i+1;
// i为元素下表,j代表当前要报的数
int i=0;
int j=1;
while(len>0){
if(a[i%m]>0){
if(j%n==0){// 找到要出圈的人,并把圈中人数减一
System.out.print(a[i%m]+" ");
a[i%m]=-1;
j=1;
i++;
len--;
}else{
i++;
j++;
}
}else{// 遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
i++;
}
}
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args){
System.out.println("程序说明如下:");
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数," +
"直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
// 提示输入总人数
System.out.println("请输入做这个游戏的总人数:");
Scanner sca=new Scanner(System.in);
int m=sca.nextInt();
// 提示输入要出圈的数值
System.out.println("请输入要出圈的数值:");
int n=sca.nextInt();
System.out.println("按出圈的次序输出序号:");
// 创建有m个值的数组
int[] a=new int[m];
// 初始长度,以后出圈一个,长度就减一
int len=m;
// 给数组赋值
for(int i=0;i<a.length;i++)
a[i]=i+1;
// i为元素下表,j代表当前要报的数
int i=0;
int j=1;
while(len>0){
if(a[i%m]>0){
if(j%n==0){// 找到要出圈的人,并把圈中人数减一
System.out.print(a[i%m]+" ");
a[i%m]=-1;
j=1;
i++;
len--;
}else{
i++;
j++;
}
}else{// 遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
i++;
}
}
}
}
#14
这个我好好研究下!主要初学JAVA不久。。。这个循环貌似听过,但是就是自己没有遇到过,现在遇到了 感觉好难
#15
#16
import java.util.Vector;
public class Loop {
public static void main(String[] args) {
Vector<Integer> man = new Vector<Integer>(0);
for (int i=0;i<100;i++) {
man.add(i);
}
int i = 0;//用以数数
int num = 0;//用以控制数到头以后的序号翻转
while (man.size() > 1) {
i++;
if (i%3 == 0) {
System.out.println("移除:" + man.get(num));
man.remove(num);//3的倍数时移除该元素
num--;//移除之后的序号偏移
}
num++;
if (num >= man.size()) {
num -= man.size();
}
}
System.out.println("剩下:" + man.get(0));
}
}
#17
public static int getLastone(int total, int step) {
int r = 0;
for (int i = 2; i <= total; i++)
r = (r + step) % i;
return r;
}
这么长代码就够了
#18
学习中呢。谢谢啊。
#19
//total 为总人数, step 为喊到 step 倍数的人退出, 方法返回的是最后一个人的原编号
public static int getLastone(int total, int step) {
int r = 0;
for (int i = 2; i <= total; i++)
r = (r + step) % i;
return r;
}
#20
很好很强大.. 正好研究下
#21
这个貌似有问题啊。。假如说是9个人一个桌子,最后出去的应该是8号。但是 用这个方法算的最后出去的是1号
#22
。。。。算错了 不好意思!
#23
这个r一开始赋值为0,是不是说是从0号人开始?i 一开始赋值为2 是为什么啊?
#24
这是什么算法?
#25
#26
class Kid {
int num;
Kid left;
Kid right;
}
class Circle {
Kid kid[] = new Kid[100];
public void inCricle() {
for(int i=0;i<kid.length;i++) {
kid[i]=new Kid();
kid[i].num = i;
}
for(int i=1;i<kid.length-1;i++) {
kid[i].left=kid[i-1];
kid[i].right=kid[i+1];
}
kid[0].left=kid[kid.length-1];
kid[0].right=kid[1];
kid[99].left=kid[98];
kid[kid.length-1].right=kid[0];
}
public int getIndex() {
int count = 0 ;
while(true) {
for(int i=0;i<kid.length;i++) {
if(kid[i].left!=null&&kid[i].right!=null) {
count++;
}
if(count==3) {
kid[i].left.right=kid[i].right;
kid[i].right.left=kid[i].left;
kid[i].left=null;
kid[i].right=null;
count=0;
}
if((kid[i].left==kid[i])&&(kid[i].right==kid[i])) {
return kid[i].num;
}
}
}
}
public static void main(String []args) {
Circle c = new Circle();
c.inCricle();
System.out.println(c.getIndex());
}
}
int num;
Kid left;
Kid right;
}
class Circle {
Kid kid[] = new Kid[100];
public void inCricle() {
for(int i=0;i<kid.length;i++) {
kid[i]=new Kid();
kid[i].num = i;
}
for(int i=1;i<kid.length-1;i++) {
kid[i].left=kid[i-1];
kid[i].right=kid[i+1];
}
kid[0].left=kid[kid.length-1];
kid[0].right=kid[1];
kid[99].left=kid[98];
kid[kid.length-1].right=kid[0];
}
public int getIndex() {
int count = 0 ;
while(true) {
for(int i=0;i<kid.length;i++) {
if(kid[i].left!=null&&kid[i].right!=null) {
count++;
}
if(count==3) {
kid[i].left.right=kid[i].right;
kid[i].right.left=kid[i].left;
kid[i].left=null;
kid[i].right=null;
count=0;
}
if((kid[i].left==kid[i])&&(kid[i].right==kid[i])) {
return kid[i].num;
}
}
}
}
public static void main(String []args) {
Circle c = new Circle();
c.inCricle();
System.out.println(c.getIndex());
}
}
#27
#28
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws Exception{
ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<100;i++)
array.add(i+"");
int num=1,i=0;
while(true){
if(array.size()==1)
break;
num++;
i++;
System.out.println("I-->"+i+"array.size()-->"+array.size());
if(i==array.size())
i=0;
if(num==3){
System.out.println(array.remove(i));
i--;
num=0;
}
}
System.out.println(array.get(0));
}
}
打印结果:
I-->1array.size()-->100
I-->2array.size()-->100
2
I-->2array.size()-->99
I-->3array.size()-->99
I-->4array.size()-->99
5
I-->4array.size()-->98
I-->5array.size()-->98
I-->6array.size()-->98
8
I-->6array.size()-->97
I-->7array.size()-->97
I-->8array.size()-->97
11
I-->8array.size()-->96
I-->9array.size()-->96
I-->10array.size()-->96
14
I-->10array.size()-->95
I-->11array.size()-->95
I-->12array.size()-->95
17
I-->12array.size()-->94
I-->13array.size()-->94
I-->14array.size()-->94
20
I-->14array.size()-->93
I-->15array.size()-->93
I-->16array.size()-->93
23
I-->16array.size()-->92
I-->17array.size()-->92
I-->18array.size()-->92
26
I-->18array.size()-->91
I-->19array.size()-->91
I-->20array.size()-->91
29
I-->20array.size()-->90
I-->21array.size()-->90
I-->22array.size()-->90
32
I-->22array.size()-->89
I-->23array.size()-->89
I-->24array.size()-->89
35
I-->24array.size()-->88
I-->25array.size()-->88
I-->26array.size()-->88
38
I-->26array.size()-->87
I-->27array.size()-->87
I-->28array.size()-->87
41
I-->28array.size()-->86
I-->29array.size()-->86
I-->30array.size()-->86
44
I-->30array.size()-->85
I-->31array.size()-->85
I-->32array.size()-->85
47
I-->32array.size()-->84
I-->33array.size()-->84
I-->34array.size()-->84
50
I-->34array.size()-->83
I-->35array.size()-->83
I-->36array.size()-->83
53
I-->36array.size()-->82
I-->37array.size()-->82
I-->38array.size()-->82
56
I-->38array.size()-->81
I-->39array.size()-->81
I-->40array.size()-->81
59
I-->40array.size()-->80
I-->41array.size()-->80
I-->42array.size()-->80
62
I-->42array.size()-->79
I-->43array.size()-->79
I-->44array.size()-->79
65
I-->44array.size()-->78
I-->45array.size()-->78
I-->46array.size()-->78
68
I-->46array.size()-->77
I-->47array.size()-->77
I-->48array.size()-->77
71
I-->48array.size()-->76
I-->49array.size()-->76
I-->50array.size()-->76
74
I-->50array.size()-->75
I-->51array.size()-->75
I-->52array.size()-->75
77
I-->52array.size()-->74
I-->53array.size()-->74
I-->54array.size()-->74
80
I-->54array.size()-->73
I-->55array.size()-->73
I-->56array.size()-->73
83
I-->56array.size()-->72
I-->57array.size()-->72
I-->58array.size()-->72
86
I-->58array.size()-->71
I-->59array.size()-->71
I-->60array.size()-->71
89
I-->60array.size()-->70
I-->61array.size()-->70
I-->62array.size()-->70
92
I-->62array.size()-->69
I-->63array.size()-->69
I-->64array.size()-->69
95
I-->64array.size()-->68
I-->65array.size()-->68
I-->66array.size()-->68
98
I-->66array.size()-->67
I-->67array.size()-->67
I-->1array.size()-->67
1
I-->1array.size()-->66
I-->2array.size()-->66
I-->3array.size()-->66
6
I-->3array.size()-->65
I-->4array.size()-->65
I-->5array.size()-->65
10
I-->5array.size()-->64
I-->6array.size()-->64
I-->7array.size()-->64
15
I-->7array.size()-->63
I-->8array.size()-->63
I-->9array.size()-->63
19
I-->9array.size()-->62
I-->10array.size()-->62
I-->11array.size()-->62
24
I-->11array.size()-->61
I-->12array.size()-->61
I-->13array.size()-->61
28
I-->13array.size()-->60
I-->14array.size()-->60
I-->15array.size()-->60
33
I-->15array.size()-->59
I-->16array.size()-->59
I-->17array.size()-->59
37
I-->17array.size()-->58
I-->18array.size()-->58
I-->19array.size()-->58
42
I-->19array.size()-->57
I-->20array.size()-->57
I-->21array.size()-->57
46
I-->21array.size()-->56
I-->22array.size()-->56
I-->23array.size()-->56
51
I-->23array.size()-->55
I-->24array.size()-->55
I-->25array.size()-->55
55
I-->25array.size()-->54
I-->26array.size()-->54
I-->27array.size()-->54
60
I-->27array.size()-->53
I-->28array.size()-->53
I-->29array.size()-->53
64
I-->29array.size()-->52
I-->30array.size()-->52
I-->31array.size()-->52
69
I-->31array.size()-->51
I-->32array.size()-->51
I-->33array.size()-->51
73
I-->33array.size()-->50
I-->34array.size()-->50
I-->35array.size()-->50
78
I-->35array.size()-->49
I-->36array.size()-->49
I-->37array.size()-->49
82
I-->37array.size()-->48
I-->38array.size()-->48
I-->39array.size()-->48
87
I-->39array.size()-->47
I-->40array.size()-->47
I-->41array.size()-->47
91
I-->41array.size()-->46
I-->42array.size()-->46
I-->43array.size()-->46
96
I-->43array.size()-->45
I-->44array.size()-->45
I-->45array.size()-->45
0
I-->0array.size()-->44
I-->1array.size()-->44
I-->2array.size()-->44
7
I-->2array.size()-->43
I-->3array.size()-->43
I-->4array.size()-->43
13
I-->4array.size()-->42
I-->5array.size()-->42
I-->6array.size()-->42
21
I-->6array.size()-->41
I-->7array.size()-->41
I-->8array.size()-->41
27
I-->8array.size()-->40
I-->9array.size()-->40
I-->10array.size()-->40
34
I-->10array.size()-->39
I-->11array.size()-->39
I-->12array.size()-->39
40
I-->12array.size()-->38
I-->13array.size()-->38
I-->14array.size()-->38
48
I-->14array.size()-->37
I-->15array.size()-->37
I-->16array.size()-->37
54
I-->16array.size()-->36
I-->17array.size()-->36
I-->18array.size()-->36
61
I-->18array.size()-->35
I-->19array.size()-->35
I-->20array.size()-->35
67
I-->20array.size()-->34
I-->21array.size()-->34
I-->22array.size()-->34
75
I-->22array.size()-->33
I-->23array.size()-->33
I-->24array.size()-->33
81
I-->24array.size()-->32
I-->25array.size()-->32
I-->26array.size()-->32
88
I-->26array.size()-->31
I-->27array.size()-->31
I-->28array.size()-->31
94
I-->28array.size()-->30
I-->29array.size()-->30
I-->30array.size()-->30
3
I-->0array.size()-->29
I-->1array.size()-->29
I-->2array.size()-->29
12
I-->2array.size()-->28
I-->3array.size()-->28
I-->4array.size()-->28
22
I-->4array.size()-->27
I-->5array.size()-->27
I-->6array.size()-->27
31
I-->6array.size()-->26
I-->7array.size()-->26
I-->8array.size()-->26
43
I-->8array.size()-->25
I-->9array.size()-->25
I-->10array.size()-->25
52
I-->10array.size()-->24
I-->11array.size()-->24
I-->12array.size()-->24
63
I-->12array.size()-->23
I-->13array.size()-->23
I-->14array.size()-->23
72
I-->14array.size()-->22
I-->15array.size()-->22
I-->16array.size()-->22
84
I-->16array.size()-->21
I-->17array.size()-->21
I-->18array.size()-->21
93
I-->18array.size()-->20
I-->19array.size()-->20
I-->20array.size()-->20
4
I-->0array.size()-->19
I-->1array.size()-->19
I-->2array.size()-->19
18
I-->2array.size()-->18
I-->3array.size()-->18
I-->4array.size()-->18
36
I-->4array.size()-->17
I-->5array.size()-->17
I-->6array.size()-->17
49
I-->6array.size()-->16
I-->7array.size()-->16
I-->8array.size()-->16
66
I-->8array.size()-->15
I-->9array.size()-->15
I-->10array.size()-->15
79
I-->10array.size()-->14
I-->11array.size()-->14
I-->12array.size()-->14
97
I-->12array.size()-->13
I-->13array.size()-->13
I-->1array.size()-->13
16
I-->1array.size()-->12
I-->2array.size()-->12
I-->3array.size()-->12
39
I-->3array.size()-->11
I-->4array.size()-->11
I-->5array.size()-->11
58
I-->5array.size()-->10
I-->6array.size()-->10
I-->7array.size()-->10
85
I-->7array.size()-->9
I-->8array.size()-->9
I-->9array.size()-->9
9
I-->0array.size()-->8
I-->1array.size()-->8
I-->2array.size()-->8
45
I-->2array.size()-->7
I-->3array.size()-->7
I-->4array.size()-->7
76
I-->4array.size()-->6
I-->5array.size()-->6
I-->6array.size()-->6
25
I-->0array.size()-->5
I-->1array.size()-->5
I-->2array.size()-->5
70
I-->2array.size()-->4
I-->3array.size()-->4
I-->4array.size()-->4
30
I-->0array.size()-->3
I-->1array.size()-->3
I-->2array.size()-->3
99
I-->2array.size()-->2
I-->1array.size()-->2
I-->2array.size()-->2
57
90
最后剩下编号为90的人,有人能告诉我做对了吗?
public class Test {
public static void main(String[] args) throws Exception{
ArrayList<String> array=new ArrayList<String>();
for(int i=0;i<100;i++)
array.add(i+"");
int num=1,i=0;
while(true){
if(array.size()==1)
break;
num++;
i++;
System.out.println("I-->"+i+"array.size()-->"+array.size());
if(i==array.size())
i=0;
if(num==3){
System.out.println(array.remove(i));
i--;
num=0;
}
}
System.out.println(array.get(0));
}
}
打印结果:
I-->1array.size()-->100
I-->2array.size()-->100
2
I-->2array.size()-->99
I-->3array.size()-->99
I-->4array.size()-->99
5
I-->4array.size()-->98
I-->5array.size()-->98
I-->6array.size()-->98
8
I-->6array.size()-->97
I-->7array.size()-->97
I-->8array.size()-->97
11
I-->8array.size()-->96
I-->9array.size()-->96
I-->10array.size()-->96
14
I-->10array.size()-->95
I-->11array.size()-->95
I-->12array.size()-->95
17
I-->12array.size()-->94
I-->13array.size()-->94
I-->14array.size()-->94
20
I-->14array.size()-->93
I-->15array.size()-->93
I-->16array.size()-->93
23
I-->16array.size()-->92
I-->17array.size()-->92
I-->18array.size()-->92
26
I-->18array.size()-->91
I-->19array.size()-->91
I-->20array.size()-->91
29
I-->20array.size()-->90
I-->21array.size()-->90
I-->22array.size()-->90
32
I-->22array.size()-->89
I-->23array.size()-->89
I-->24array.size()-->89
35
I-->24array.size()-->88
I-->25array.size()-->88
I-->26array.size()-->88
38
I-->26array.size()-->87
I-->27array.size()-->87
I-->28array.size()-->87
41
I-->28array.size()-->86
I-->29array.size()-->86
I-->30array.size()-->86
44
I-->30array.size()-->85
I-->31array.size()-->85
I-->32array.size()-->85
47
I-->32array.size()-->84
I-->33array.size()-->84
I-->34array.size()-->84
50
I-->34array.size()-->83
I-->35array.size()-->83
I-->36array.size()-->83
53
I-->36array.size()-->82
I-->37array.size()-->82
I-->38array.size()-->82
56
I-->38array.size()-->81
I-->39array.size()-->81
I-->40array.size()-->81
59
I-->40array.size()-->80
I-->41array.size()-->80
I-->42array.size()-->80
62
I-->42array.size()-->79
I-->43array.size()-->79
I-->44array.size()-->79
65
I-->44array.size()-->78
I-->45array.size()-->78
I-->46array.size()-->78
68
I-->46array.size()-->77
I-->47array.size()-->77
I-->48array.size()-->77
71
I-->48array.size()-->76
I-->49array.size()-->76
I-->50array.size()-->76
74
I-->50array.size()-->75
I-->51array.size()-->75
I-->52array.size()-->75
77
I-->52array.size()-->74
I-->53array.size()-->74
I-->54array.size()-->74
80
I-->54array.size()-->73
I-->55array.size()-->73
I-->56array.size()-->73
83
I-->56array.size()-->72
I-->57array.size()-->72
I-->58array.size()-->72
86
I-->58array.size()-->71
I-->59array.size()-->71
I-->60array.size()-->71
89
I-->60array.size()-->70
I-->61array.size()-->70
I-->62array.size()-->70
92
I-->62array.size()-->69
I-->63array.size()-->69
I-->64array.size()-->69
95
I-->64array.size()-->68
I-->65array.size()-->68
I-->66array.size()-->68
98
I-->66array.size()-->67
I-->67array.size()-->67
I-->1array.size()-->67
1
I-->1array.size()-->66
I-->2array.size()-->66
I-->3array.size()-->66
6
I-->3array.size()-->65
I-->4array.size()-->65
I-->5array.size()-->65
10
I-->5array.size()-->64
I-->6array.size()-->64
I-->7array.size()-->64
15
I-->7array.size()-->63
I-->8array.size()-->63
I-->9array.size()-->63
19
I-->9array.size()-->62
I-->10array.size()-->62
I-->11array.size()-->62
24
I-->11array.size()-->61
I-->12array.size()-->61
I-->13array.size()-->61
28
I-->13array.size()-->60
I-->14array.size()-->60
I-->15array.size()-->60
33
I-->15array.size()-->59
I-->16array.size()-->59
I-->17array.size()-->59
37
I-->17array.size()-->58
I-->18array.size()-->58
I-->19array.size()-->58
42
I-->19array.size()-->57
I-->20array.size()-->57
I-->21array.size()-->57
46
I-->21array.size()-->56
I-->22array.size()-->56
I-->23array.size()-->56
51
I-->23array.size()-->55
I-->24array.size()-->55
I-->25array.size()-->55
55
I-->25array.size()-->54
I-->26array.size()-->54
I-->27array.size()-->54
60
I-->27array.size()-->53
I-->28array.size()-->53
I-->29array.size()-->53
64
I-->29array.size()-->52
I-->30array.size()-->52
I-->31array.size()-->52
69
I-->31array.size()-->51
I-->32array.size()-->51
I-->33array.size()-->51
73
I-->33array.size()-->50
I-->34array.size()-->50
I-->35array.size()-->50
78
I-->35array.size()-->49
I-->36array.size()-->49
I-->37array.size()-->49
82
I-->37array.size()-->48
I-->38array.size()-->48
I-->39array.size()-->48
87
I-->39array.size()-->47
I-->40array.size()-->47
I-->41array.size()-->47
91
I-->41array.size()-->46
I-->42array.size()-->46
I-->43array.size()-->46
96
I-->43array.size()-->45
I-->44array.size()-->45
I-->45array.size()-->45
0
I-->0array.size()-->44
I-->1array.size()-->44
I-->2array.size()-->44
7
I-->2array.size()-->43
I-->3array.size()-->43
I-->4array.size()-->43
13
I-->4array.size()-->42
I-->5array.size()-->42
I-->6array.size()-->42
21
I-->6array.size()-->41
I-->7array.size()-->41
I-->8array.size()-->41
27
I-->8array.size()-->40
I-->9array.size()-->40
I-->10array.size()-->40
34
I-->10array.size()-->39
I-->11array.size()-->39
I-->12array.size()-->39
40
I-->12array.size()-->38
I-->13array.size()-->38
I-->14array.size()-->38
48
I-->14array.size()-->37
I-->15array.size()-->37
I-->16array.size()-->37
54
I-->16array.size()-->36
I-->17array.size()-->36
I-->18array.size()-->36
61
I-->18array.size()-->35
I-->19array.size()-->35
I-->20array.size()-->35
67
I-->20array.size()-->34
I-->21array.size()-->34
I-->22array.size()-->34
75
I-->22array.size()-->33
I-->23array.size()-->33
I-->24array.size()-->33
81
I-->24array.size()-->32
I-->25array.size()-->32
I-->26array.size()-->32
88
I-->26array.size()-->31
I-->27array.size()-->31
I-->28array.size()-->31
94
I-->28array.size()-->30
I-->29array.size()-->30
I-->30array.size()-->30
3
I-->0array.size()-->29
I-->1array.size()-->29
I-->2array.size()-->29
12
I-->2array.size()-->28
I-->3array.size()-->28
I-->4array.size()-->28
22
I-->4array.size()-->27
I-->5array.size()-->27
I-->6array.size()-->27
31
I-->6array.size()-->26
I-->7array.size()-->26
I-->8array.size()-->26
43
I-->8array.size()-->25
I-->9array.size()-->25
I-->10array.size()-->25
52
I-->10array.size()-->24
I-->11array.size()-->24
I-->12array.size()-->24
63
I-->12array.size()-->23
I-->13array.size()-->23
I-->14array.size()-->23
72
I-->14array.size()-->22
I-->15array.size()-->22
I-->16array.size()-->22
84
I-->16array.size()-->21
I-->17array.size()-->21
I-->18array.size()-->21
93
I-->18array.size()-->20
I-->19array.size()-->20
I-->20array.size()-->20
4
I-->0array.size()-->19
I-->1array.size()-->19
I-->2array.size()-->19
18
I-->2array.size()-->18
I-->3array.size()-->18
I-->4array.size()-->18
36
I-->4array.size()-->17
I-->5array.size()-->17
I-->6array.size()-->17
49
I-->6array.size()-->16
I-->7array.size()-->16
I-->8array.size()-->16
66
I-->8array.size()-->15
I-->9array.size()-->15
I-->10array.size()-->15
79
I-->10array.size()-->14
I-->11array.size()-->14
I-->12array.size()-->14
97
I-->12array.size()-->13
I-->13array.size()-->13
I-->1array.size()-->13
16
I-->1array.size()-->12
I-->2array.size()-->12
I-->3array.size()-->12
39
I-->3array.size()-->11
I-->4array.size()-->11
I-->5array.size()-->11
58
I-->5array.size()-->10
I-->6array.size()-->10
I-->7array.size()-->10
85
I-->7array.size()-->9
I-->8array.size()-->9
I-->9array.size()-->9
9
I-->0array.size()-->8
I-->1array.size()-->8
I-->2array.size()-->8
45
I-->2array.size()-->7
I-->3array.size()-->7
I-->4array.size()-->7
76
I-->4array.size()-->6
I-->5array.size()-->6
I-->6array.size()-->6
25
I-->0array.size()-->5
I-->1array.size()-->5
I-->2array.size()-->5
70
I-->2array.size()-->4
I-->3array.size()-->4
I-->4array.size()-->4
30
I-->0array.size()-->3
I-->1array.size()-->3
I-->2array.size()-->3
99
I-->2array.size()-->2
I-->1array.size()-->2
I-->2array.size()-->2
57
90
最后剩下编号为90的人,有人能告诉我做对了吗?
#29
r = 0; 只是一个初始化而已, 不初始化后边不让 return 其实没实际意义
i = 2 开始 是从数学的角度推算来的
#30
约瑟夫环 具体怎么我也没看过
#31
public class Count3Quit {
public static void main(String[] args) {
boolean[] arr = new boolean[500];
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount>1) {
if(arr[index]==true) {
countNum++;
if(countNum == 3) {
countNum = 0;
leftCount--;
arr[index] = false;
}
}
index ++;
if(index == arr.length ) {
index = 0;
}
}
for(int i=0; i<arr.length ;i++) {
if(arr[i] == true) {
System.out.println(i);
}
}
}
}
public static void main(String[] args) {
boolean[] arr = new boolean[500];
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount>1) {
if(arr[index]==true) {
countNum++;
if(countNum == 3) {
countNum = 0;
leftCount--;
arr[index] = false;
}
}
index ++;
if(index == arr.length ) {
index = 0;
}
}
for(int i=0; i<arr.length ;i++) {
if(arr[i] == true) {
System.out.println(i);
}
}
}
}
#32
具体实现代码如下:
public class Quit3 {
public static void main(String[] args) {
boolean[] a = new boolean[100];
for(int i=0;i<a.length;i++) {
a[i] = true;
}
int count = 0;
int index = 0;
int NumLength = a.length;
while(NumLength >1) {
if(a[index] == true) {
count ++;
if(count==3) {
count=0;
a[index]=false;
NumLength --;
}
}
index ++;
if(index == a.length) {
index = 0;
}
}
for(int i=0;i<a.length;i++) {
if(a[i] == true) {
System.out.println(i);
}
}
}
}
#33
完全可以使用ArrayList,增添或者删除内部元素(相当于数据结构中的链表);
#34
我得出的结果跟你一样。我的代码:
/**
* 思路:0-99赋值,每个人都喊口号(p),如果口号是3的倍数,则赋值为 -1,即为出圈,同时记录出圈人的个数(count),
* 首先判断是不是出圈了,没有出圈则看口号是不是3的倍数,是则出圈,否则继续喊口号(p++),如果出圈了,则不喊口号(p--)
* 因为每次都是先喊口号,再判断出没出圈,所以当喊完口号后发现自己是出圈的,所以p--,就相当于自己没有喊口号
*/
public class Array {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int length =100; //数的个数
int a[] = new int[length]; //存放数的数组
//初始化
for(int i = 0;i <length;i++){
a[i] = i;
}
int p = 1; //计数器,一直增加,相当于口号
int k = 0; //数组下标
int count = 0; //用于记录出圈的个数
while(true){
k = k%length;
//判断是否出圈
if(a[k] != -1){
//口号是不是3的倍数
if( (p%3) == 0){
a[k]=-1;
count ++;
}
}else{
//出圈了,不喊口号
p--;
}
//判断是不是倒数第二个出圈的,是则break掉
if(count <length-1 ){
p++;
k++;
}else{
break;
}
}
//找出最后一个人
for(int i = 0;i <length;i++){
if(a[i] != -1){
System.out.println(a[i]);
}
}
}
}
#35
class Test
{
public static void main(String[] args)
{
int count = 100;
//剩余人数
int leavings = count;
int[] all = new int[count];
//index人物编号,counter报数
int index = 0, counter = 0;
while (true)
{
//人物对应的值为-1表示出局
if (all[index] != -1)
{
all[index] = index+1;
counter++;
}
if (counter%3 == 0)
{
if (--leavings == 1)
{
System.out.println(all[index]);
break;
}
all[index] = -1;
}
index++;
if (index == count-1)
{
index = 0;
}
}
}
}
#36
来学习学习吧, 呵呵
#37
public class Test
{
public static void main(String[] args)
{
// count人物总数,index人物编号,counter报数
int count = 100, index = 0, counter = 0;
// 剩余人数
int leavings = count;
// 圈
int[] circle = new int[count];
System.out.println("人物编号 报数");
while (true)
{
// 排的圈里的人物对应的值为-1表示出局
if (circle[index] != -1)
{
circle[index] = index + 1;
System.out.printf("%4d\t%3d\n", index, ++counter);
}
if (counter % 3 == 0 && circle[index] != -1)
{
if (leavings-- == 1)
{
System.out.printf("最后一个:\n%4d\t%3d\n", index, counter);
break;
}
circle[index] = -1;
}
if (++index == count)
{
System.out.println("剩余人数:" + leavings);
index = 0;
}
}
}
}
最后结果是90
#38
谢啦,我已经结了!