黑马程序员技术交流社区
标题:
有100个人围成一个圈,从1开始报数,。。。。
[打印本页]
作者:
木子小四
时间:
2016-4-13 18:50
标题:
有100个人围成一个圈,从1开始报数,。。。。
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
我得出的答案是93,对吗
==================================
package com.heima.test_kaoshi;
import java.util.ArrayList;
public class Test13 {
/**
*
10、 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
---------------------------------------------------------------
分析:
创建集合,存储1-100编号
定义count 用来计数
如果集合的长度不为1,就一直循环删除
而且指针等于集合长度,就将指针清零
计数器叠加,加至14时,清零
*/
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 1;i<= 100;i++){
list.add(i);
}
int count = 0;
for(int i = 0;list.size()!=1;i++){
if(i == list.size()){
i=0;
}
if(count==14){
list.remove(i--);
count=0;
}
count++;
}
System.out.println("最后剩下的是第"+list.get(0)+"号");
}
}
复制代码
作者:
木子小四
时间:
2016-4-13 18:53
上述代码中,26行,有错,更正为int count=1;结果是92
代码:
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 1;i<= 100;i++){
list.add(i);
}
int count = 1;
for(int i = 0;list.size()!=1;i++){
if(i == list.size()){
i=0;
}
if(count==14){
list.remove(i--);
count=0;
}
count++;
}
System.out.println("最后剩下的是第"+list.get(0)+"号");
}
复制代码
作者:
xiaofushen
时间:
2016-4-13 20:48
约瑟夫环.我的答案和楼主一样,让人退出的操作也可以这样:
if(count % 14 == 0) {
list.remove(i--);
}
count++;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2