欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

500个小孩手拉手围成一圈,数一、二、三数到三的小孩退出,手拉手三数,理解面向对象的编程思想,

来源: javaer 分享于  点击 26428 次 点评:19

500个小孩手拉手围成一圈,数一、二、三数到三的小孩退出,手拉手三数,理解面向对象的编程思想,


理解面向对象的编程思想,500个小孩手拉手围成一圈,数一、二、三数到三的小孩退出,问最后剩下的小孩是第几个小孩。

package com.taoniwu;public class Test3Quit3{    //500个小孩拉成一个圈,1、2、3数到3的孩子退出    public static void main(String[] args){        KidCircle kc = new KidCircle(500);        int num = 0;        Kid k = kc.first;        while(kc.count>1){            num++;            if(num == 3){                kc.delete(k);                num = 0;                }            k = k.right;            }        System.out.println(kc.first.id);    }}//定义小孩类class Kid{    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();          }    }    public void add(){        Kid k = new Kid();        k.id = count;        if(count<=0){            first = k;            last = k;            k.left = k;            k.right = k;            }        else{            k.left = last;            k.right = first;            last.right = k;            first.left = k;            last = k;        }        count++;    }    public void delete(Kid d){        if(count<=0){            return;         }        else if(count ==1){            first = last = null;            }        else{            d.left.right = d.right;            d.right.left = d.left;            if(d == first){                first = first.right;            }            else if(d == last){                last = last.left;               }           }        count--;    }   }//该片段来自于http://byrx.net
相关栏目:

用户点评