黑马程序员技术交流社区
标题:
这道题用代码如何实现
[打印本页]
作者:
chaos1234
时间:
2016-6-8 19:34
标题:
这道题用代码如何实现
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。
问:最后剩下的是100人中的第几个人?
作者:
我是你岁哥❤环
时间:
2016-6-12 09:28
[ 本帖最后由 我是你岁哥❤环 于 2016-6-12 09:34 编辑 ]\n\n[code]<div class="blockcode"><blockquote>class Test{
public static void main(String[] args) {
/*
思路:[/code]
运行效果.png
(36.83 KB, 下载次数: 11)
下载附件
2016-6-12 09:31 上传
运行效果2png.png
(37.12 KB, 下载次数: 13)
下载附件
2016-6-12 09:31 上传
作者:
我是你岁哥❤环
时间:
2016-6-12 09:38
class Test{
public static void main(String[] args) {
/*
思路:
1.定义一个boolean类型的数组,用于存储100个人是否报号14,初始状态,设置100个人未报号14为true
2.遍历数组,当元素的值为true时,表示这个人没有报过号14,count++
3.设置报号计数器初始值为0,每次报号count加1,每次报号到14人即count的值累加到14时,状态变为false
4.当报号到14时,count恢复至0,重新计数,同时,每次有人报号14时,剩余的未报号的人数就减少一个人
5.直到剩下最后一个人的时候,停止报号
*/
//定义一个boolean类型的数组,用于存储100个人是否报号14
boolean[] people = new boolean[100];
//初始状态,设置100个人未报号14为true
for (int i=0; i<people.length; i++) {
people[i] = true;
}
int num = 0; //num表示已经有多少人报号了14
int count = 0; //定义计数器
int[] arr = new int[people.length]; //存储每次报14这个数的人的位置
while (num<people.length) {
for (int i=0; i<people.length; i++) {
if (people[i]) { //如果没有报号14就计数
count++;
}
if (count == 14) { //当count的值为14时,表示这个位置的人报号14了
people[i] = false;
count = 0;
arr[num++] = (i+1); //将每次报14这个数的人的位置存储到一个新的数组中
}
}
}
System.out.println("次数"+ "\t" + "100人中的第几人");
for (int i=0; i<arr.length; i++) {
System.out.println((i+1)+ " \t----> \t" + arr[i]);
}
//最后剩下的人就是最后一个报14这个数的人
System.out.println("最后剩下的是100人中的第" + arr[arr.length-1] +"个人");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2