24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > Java开发

【常州java培训学校】经典算法 看大家的基本功是否扎实

2018-02-26 10:57:02 东方博宜 阅读

问题:

500个小孩围成一圈,从第一个开始报数:1,2,3,1,2,3,1,2,3,……每次报3的小孩退出
 问最后剩下的那个小孩,在以前500人里是第几个???


解决方案:

答案是第436个小孩

List<Integer> ch=new ArrayList<Integer>();   //用一个List来存放500个小孩
for(int i=1;i<=500;i++){
ch.add(i);
}
int temp=0;
for(int j=0;j<ch.size();j++){//遍历List
temp++;//代表数数
if(temp==3){   //如果是数到3则把这个小孩从List中移除 并从1开始数(temp=0)
ch.remove(j);
j--;
temp=0;
}
if(j==ch.size()-1)//如果遍历到最后一个则重新开始遍历  j=-1 因为j++ 所以是从j=0开始重新遍历
j=-1;
if(ch.size()==1)//最后List的大小为1  则只剩下最后一个小孩 打印出来 结束
{
System.out.println(ch.get(0));
break;
}
}

Powered by 东方博宜教育咨询江苏有限公司  ©2008-2018 www.czos.cn