JAVA 哪位大虾帮我看下我的答案对否?

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:12:17
题目:有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小朋友开始循环1-3报数,数到3的小朋友就退出。编写一个Java应用程序,计算出最后一个小朋友的号码是多少。我编的程序算出来的答案是500!为了不影响各位的思路,我就不把我的代码贴出来了,各位编个程序算算,看看答案是否和我一致,如果不一致的要说明理由~

435(id 从0开始数)

你的答案是错的,这个题是一个比较有名的题目,马士兵老师在他的视频里讲过.代码如下:
class Kid {
int id;
Kid left,right;
}

class KidCircle {
int count;
Kid first,last;

KidCircle(int n) {
for(int i=0;i<n;i++) {
add();
}
}

void add() {
Kid k = new Kid();
k.id=count;
if(count<=0) {
first=k;
last=k;
k.left=k;
k.right=k;
}
else {
last.right=k;
k.left=last;
k.right=first;
first.left=k;
last=k;
}
count++;
}

void delete(Kid k) {
if(count==0) {
return;
}
else if(count==1) {
first=last=null;
}
else {
k.left.right=k.right;
k.right.left=k.left;
if(k==first) {
first=k.right;
}
if(k==last) {
last=k.left;
}