黑马程序员技术交流社区
标题:
一个循环报数问题求教
[打印本页]
作者:
hero_king
时间:
2016-6-2 22:40
标题:
一个循环报数问题求教
* 100个人围成一个圈报数,报到14的同学被淘汰,他的下一位同学补上他的位置并从1开始重新报数,以此类推
* 请问最后剩下的一名同学是原来100人中的第几个?
实在是没有思路。。。做了半天做不出来
作者:
18611643318
时间:
2016-6-2 22:51
package com.itheima;
import java.util.ArrayList;
import java.util.List;
/**
*
*
* 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
* 然后其他人重新开始,从1报数,到14退出。 问:最后剩下的是100人中的第几个人?
*
* @author Venus
*
*/
public class Test10 {
public static void main(String[] args) {
// 创建一个集合all,集合中的元素为1,2,3,……,100,代表所有人
List<Integer> all = new ArrayList<Integer>();
for (int i = 1; i <= 100; i++) {
all.add(i);
}
// 下面的代码表示循环99次,每次从集合里删除一个元素,代表退出的那个人的编号
// i表示退出的那个人在all集合中的下标
int i = 0;
// 循环99次
for (int n = 1; n < 100; n++) {
// 每次循环时,求得将要退出的人在集合中的下标
i = (i + 13) % all.size();
// 将集合中代表该人的元素删除
// System.out.println(all.get(i));
all.remove(i);
}
// 循环99次,删除99个人,剩下的最后一个
System.out.println("最后剩下的是第 " + all.get(0) + " 个人");
}
}
复制代码
作者:
hero_king
时间:
2016-6-2 22:54
18611643318 发表于 2016-6-2 22:51
兄弟你太棒了。。。
作者:
hero_king
时间:
2016-6-2 22:57
18611643318 发表于 2016-6-2 22:51
太感谢你啦
作者:
18611643318
时间:
2016-6-2 23:01
hero_king 发表于 2016-6-2 22:57
太感谢你啦
互相学习.
作者:
归宿123
时间:
2016-6-2 23:31
6666666666666
作者:
abc123james
时间:
2016-6-2 23:31
第一眼就想到了集合!不过没二楼快{:2_43:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2