黑马程序员技术交流社区
标题:
百人围圈数数
[打印本页]
作者:
rnyrnyrny
时间:
2014-12-29 23:41
标题:
百人围圈数数
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出
然后其他人重新开始,从1报数,到14退出
问:最后剩下的是100人中的第几个人?
import
java.util.*
;
class CountTest
{
public static void
main(String[] args) {
int
index =
count
(
100
,
14
)
;
System.
out
.println(
"最后剩下的人编号是:"
+ index)
;
}
//定义一个函数,传入围成圈的人数,以及每报到多少的人就要退出,返回最后剩下的人的编号
public static int
count(
int
sum
,
int
check) {
//使用ArrayList存入数字1到100来代表每个人的编号
List<Integer> l =
new
ArrayList<Integer>()
;
for
(
int
i =
1
;
i <= sum
;
i++) {
l.add(i)
;
}
//获取ArrayList的迭代器
ListIterator<Integer> li = l.listIterator()
;
int
count =
0
;
//定义计数器
//循环条件:圈中的人数大于1
//每循环一次,计数器加一,使用next()方法使指针指向下一个数
//当指针指向的是列表的最后一个元素时,重新获取迭代器,使指针回到列表开头
//如果计数器到达14就把迭代器指向的元素删除
while
(l.size() >
1
) {
count++
;
if
(li.hasNext()) {
li.next()
;
}
else
{
li = l.listIterator()
;
li.next()
;
}
if
(count == check) {
li.remove()
;
count =
0
;
}
}
//最后返回列表中剩下的最后一个元素
return
l.get(
0
)
;
}
}
作者:
jian叫兽
时间:
2014-12-30 01:25
学习,慢慢研究。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2