黑马程序员技术交流社区
标题:
这是我做的一道入学测试题,感觉挺简洁易懂。和大家分...
[打印本页]
作者:
dreamwork
时间:
2016-4-15 12:02
标题:
这是我做的一道入学测试题,感觉挺简洁易懂。和大家分...
package com.itheima;
/**
* 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
* 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
* @author Administrator
*
*/
public class Test10 {
public static void main(String[]args){
// 创建一个长度为100的数组
int[]array=new int[100];
// 被剔除的数字
int outNum=0;
// 变量
int j=1;
int n=0;
// 将1-100添加到数组
for(int i=0;i<array.length;i++){
array[i]=i+1;
}
// 遍历数组
while(outNum<array.length){
if(array[(j-1)%array.length]!=-1){
n++;
// 将数到14的人“干掉”
if(n==14){
n=0;
outNum++;
// 将干掉的数赋值给
int p=array[(j-1)%array.length];
// 输出最后一个
if(outNum==100){
System.out.println("最后剩下的是100人中的第"+p+"个人");
}
array[(j-1)%array.length]=-1;
}
}
j++;
}
}
}
作者:
lixianglei
时间:
2016-4-15 22:35
不错啊 学习了
作者:
开营
时间:
2016-4-15 22:44
恩恩 挺不错的 谢谢分享
作者:
划江北上
时间:
2016-4-15 22:50
约瑟夫环
作者:
dreamwork
时间:
2016-4-15 23:01
划江北上 发表于 2016-4-15 22:50
约瑟夫环
大神把代码分享一下吧
作者:
liuchenguangqnm
时间:
2016-4-15 23:04
之前试过类似的题,不过使用链表做的,学习一下大神是如何用数组实现
作者:
划江北上
时间:
2016-4-15 23:06
dreamwork 发表于 2016-4-15 23:01
大神把代码分享一下吧
基础视屏中就有,很简单的.我就不摘抄了
作者:
liuqjss
时间:
2016-4-24 10:18
{:3_47:}感谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2