您的位置:首页 > 编程语言 > Java开发

n个人循环报数1-3问题

2016-03-21 20:52 357 查看

问题描述: 标号1-n的n个人首尾相接,报数1-3,报到3者退出,问剩下最后一人标号。

public int lastPerson(int n) {
if(n <= 1)
return n;

int lastPerson = 0;

boolean[] personList = new boolean
;
for(int i = 0; i < n; i++){
personList[i] = true;
}
int nTmp = n; //当前剩余人数
int start = 0; //当前开始报数位置
int cnt = 0; //计数器

// 进行报数,直到仅剩下1人
while(true){
if(personList[start] == true){
cnt++;
}
if(cnt == 3){
personList[start] = false;
cnt = 0;
nTmp--;
}

if(nTmp == 1){
break;
}
start++;
if(start == n){
start = 0;
}
}
//找出这一人
for(int i = 0; i < n; i++){
if(personList[i] == true){
lastPerson = i + 1;
}
}
return lastPerson;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java