黑马程序员技术交流社区
标题:
问大家一个我认为很难的题
[打印本页]
作者:
一个好人
时间:
2015-4-18 18:25
标题:
问大家一个我认为很难的题
本帖最后由 一个好人 于 2015-4-19 17:43 编辑
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
这道题我考虑了很久,还是没想到解决的办法
作者:
adalvik
时间:
2015-4-18 20:12
代码已经发出
http://bbs.itheima.com/thread-188794-1-1.html
作者:
马士基
时间:
2015-4-18 21:42
约瑟夫环的问题
作者:
曾宇
时间:
2015-4-18 22:19
/*
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?*/
import java.util.ArrayList;
import java.util.Iterator;
class DemoLength
{
public static void main(String[] args)
{
ArrayList<Integer> arr = new ArrayList<Integer>();//创建一个存活的人的名单
for(int i=1;i<=100;i++)
{
arr.add(i);//给名单上的人取名字
}
show(arr);//game开始
}
private final static int kill=14;//第十四个人干掉
private static int count=0;//计数自增变量
public static void show(ArrayList<Integer> arr)
{
ArrayList<Integer> buf = new ArrayList<Integer>();//收集将要被干掉的元素,死亡名单
while(arr.size()>1)//如果集合大于1,继续循环
{
for(int i=0;i<arr.size();i++)//循环当前集合
{
count++;//自增,开始数数
if(count%kill==0)//为14的倍数被干掉
{
buf.add(arr.get(i));//将要被干掉的人加入死亡名单
}
}
arr.removeAll(buf);//在存活的人中干掉死亡名单上的人。
buf.clear();//清空死亡名单
}
System.out.println(arr);//输出最后存活的人
}
}
复制代码
作者:
duzhi409
时间:
2015-4-18 22:24
学习学习
作者:
一个好人
时间:
2015-4-19 09:44
谢谢答案,
作者:
李维、、
时间:
2015-4-19 11:10
学习了,谢谢
作者:
Mr7952
时间:
2015-4-19 11:14
原来如此
作者:
mono
时间:
2015-4-19 11:25
学习一下、
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2