三退
数三退一,就是指很多个小朋友围成一个圈,从第一个开始数1.2.3. 第三个小朋友就退出 这个圈,以此类推。
第一种方法,以面向过程的方式,此程序的案例十500个小朋友,
public class Count3Quit {
public static void main(String[] args) {
boolean []arr=new boolean [500];
for(int i=0;i<arr.length;i++){
arr[i]=true;
}
int leftCount=arr.length;
int countNun=0;
int index=0;
while(leftCount>1){
if(arr[index]==true){
countNun++;
if(countNun==3){
countNun=0;
arr[index]=false;
leftCount--;
}
}
index++;
if(index==arr.length){
index=0;
}
}
for(int i=0;i<arr.length;i++){
if(arr[i]==true){
System.out.println(i);
}
}
}
}
第二种方法是面向对象的思维
public class Count3quit2 {
public static void main(String[] args) {
kidCirle a=new kidCirle(500);
int countNun=0;
kid k=a.frist;
while(a.count>1){
countNun++;
if(countNun==3){
a.delete(k);
countNun=0;
}
k=k.right;
}
System.out.println(a.frist.id);
}
}
class kid{
int id;
kid left,right;
}
class kidCirle{
int count=0;
kid frist,last;
kidCirle(int n){
for(int i=0;i<n;i++){
add();
}
}
void add(){
kid k=new kid();
k.id=count;
if(count<=0){
k.left=k;
k.right=k;
frist=k;
last=k;
}else{
k.right=frist;
k.left=last;
frist.left=k;
last.right=k;
last=k;
}
count++;
}
void delete(kid k){
if(count<=0){
return;
}
if(count==1){
frist=last=null;
}else{
k.left.right=k.right;
k.right.left=k.left;
if(k==frist){
frist=k.right;
}else if(k==last){
last=k.left;
}
}
count--;
}
}
相关阅读
推荐几款可以直接在手机上编程的app(包含Java、C、Pyt
这里介绍几款可以在手机上编程的app,分别是: 1.java和Android:AIDE集成开发环境。 2.C语言:c语言编译器、C4droid。 3.python:QPyth
微信怎么扫二维码付款?怎么使用二维码付款?微信付款已经是很普遍的事情,现在购物买东西基本上是微信扫码付款,大型超市都是扫描买家
闲鱼二手车司法拍卖是指法院在闲鱼上进行拍卖的汽车,闲鱼正式宣布将淘宝拍卖业务引入。跟淘宝拍卖合作的海关、法院等机构、基金会
Java中notify和notifyAll的区别 - 何时以及如何使用
Java notify vs notifyAll notify和notifyAll方法之间有什么区别是棘手的Java问题之一! Condition 是个什么玩
在日常生活中,使用微信交流的人非常多,加微信好友更是很常见的事情,现在的微信添加好友有很多种方法,最常见的就是输入微信号、微信扫