您的位置:首页 > 其它

n 个人围成一圈(编号1-n),数到3的出列,最后剩下的人的编号

2012-11-18 16:46 337 查看
问题:

n 个人围成一圈(编号1-n),数到3的出列,然后又从头开始数,一直循环到最后一个人,请问最后剩下的人的编号?

public int numberToExit(int total, int interval) {
boolean[] arr = new boolean[total];
for(int i = 0; i < arr.length; i++) {
arr[i] = true;
}

int left = arr.length;
int count = 0;
int index = 0;
while (left > 1) {
if(arr[index] == true) {
count++;
if(count == interval) {
count = 0;
arr[index] = false;
left--;
}
}
// we need to change the index if out of the range.
index++;
if(index == arr.length) {
index = 0;
}
}

for(int i = 0;i < arr.length; i++) {
if(arr[i] == true) {
return i+1;
}
}
return -1;
}
转载请注明出处:http://blog.csdn.net/beiyeqingteng
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐