500个人围成一圈,从第一个人开始数数,数到第三个人,第三个人就退出,然后从第四个人开始继续数到3就退出一人,最后只城下一个人的时候就输出那个人的下标!?????????
class Kid{
int id;
Kid right;
Kid left;
}
class KidCircle{
int count=0;
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{
k.right=first;
first.left=k;
k.left=last;
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;
}else if(k==last){
last=k.left;
}
}
count--;
}
}
public class Count3Quit1{
public static void main (String [] args){
KidCircle kc=new KidCircle(500);
int countNum=0;
Kid k=kc.first;
while(kc.count>1){
countNum++;
if(countNum==3){
kc.Delete(k);
countNum=0;
}
k=k.right;
}
System.out.println(kc.first.id);
}
}
class Kid{
int id;
Kid right;
Kid left;
}
class KidCircle{
int count=0;
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{
k.right=first;
first.left=k;
k.left=last;
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;
}else if(k==last){
last=k.left;
}
}
count--;
}
}
public class Count3Quit1{
public static void main (String [] args){
KidCircle kc=new KidCircle(500);
int countNum=0;
Kid k=kc.first;
while(kc.count>1){
countNum++;
if(countNum==3){
kc.Delete(k);
countNum=0;
}
k=k.right;
}
System.out.println(kc.first.id);
}
}
就是 你放在类里面了,应该放到Delete()里
对吧
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;
}else if(k==last){
last=k.left;
}
}
count--;
}
}
去掉这个括号。
{
int id;
Kid left;
Kid right;
}class KidCircle
{
int count=0;
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=last=k;
k.left=k.right=k;
}
else
{
k.left=last;
k.right=first;
first.left = k;
last.right = k;
last = k;
}
count++;
}
void delete(Kid k)
{
if (count<=1)
return;
else
{
k.left.right = k.right;
k.right.left = k.left;
}
count--;
}
}public class test
{
public static void main(String args[])
{
KidCircle kc = new KidCircle(500);
int countNum = 0;
Kid k = kc.first;
while (kc.count>1)
{
countNum++;
if (countNum%3==0)
{
kc.delete(k);
}
k = k.right;
}
System.out.println("result:"+k.id);
}
}