
publicclassCount3Quit2...{
publicstaticvoidmain(String[]args)...{
KidCirclekc=newKidCircle(500);
intcountNum=0;
Kidk=kc.first;
while(kc.count>1)...{
countNum++;
if(countNum==3)...{
countNum=0;
kc.delete(k);
}
k=k.right;
}
System.out.println(kc.first.id);
}
}

classKid...{
intid;
Kidleft;
Kidright;
}

classKidCircle...{
intcount=0;
Kidfirst,last;

KidCircle(intn)...{
for(inti=0;i<n;i++)...{
add();
}
}

voidadd()...{
Kidk=newKid();
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++;
}

voiddelete(Kidk)...{
if(count<=0)...{
return;
}elseif(count==1)...{
first=last=null;
}else...{
k.left.right=k.right;
k.right.left=k.left;

if(k==first)...{
first=k.right;
}elseif(k==last)...{
last=k.left;
}
}
count--;
}
}
本文介绍了一个简单的计数删除游戏算法实现。该算法通过定义Kid和KidCircle两个类,模拟了一个从环形链表中按特定规则移除节点直至只剩下一个节点的过程。通过这个过程,最终输出链表中最后一个节点的ID。
733

被折叠的 条评论
为什么被折叠?



