500个人围成一个圈子,数够3人,就退出1个,问最后剩下的是几号?

检验先有5个人,应该留下第4个人,由于是数组,所以第四个人的下标是3.

/*achieve the  funtion :count 3 kids, the quit the third kid
use the object thinking */public class Test{public static void main(String[] args) {KidCircle kc = new KidCircle(5);int countNum = 0;Kid k = kc.first;while(kc.count > 1){countNum ++;if(countNum ==3){countNum =0;kc.delete(k);}k = k.right;}System.out.println(kc.first.id);  }
}/* define class Kid*/
class Kid{int id;Kid left;   //left is means the current kids'left kid  Kid right; //right is means the current kids'right  kid
}/* define class KidCircle*/
class KidCircle{int count = 0;   //mean the circles'numberKid first,last;  //define the circles' first kid and last kid.KidCircle(int n){//Constructor :new n numbers kid circlefor(int i = 0;i<n;i++){add();}}/*add a kid in the last kids'right*/void add(){/*first: new a kid;id = count*/Kid k = new Kid();k.id = count;/*if  no kid in the circle ,the new kid is the first kid and is the last kid*/if(count <=0){first = k;last = k;k.left = k;k.right = k;}/*if has some kids in the circle,the new kid will stand at the last kids'right,and the new kids'left is the last kid. another: the new kids'right is the first kids'lest*/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;}else if(k == last){last = k.left;}}count --;}
}

java例子:数组 数3退1相关推荐

  1. java实现数组的奇偶数互换

    java实现数组的奇偶数互换 算法需求 算法思路 代码实现 算法需求 定义一个数组变量,将其中的元素进行调换,奇数放到数组左边,偶数放到数组右边 算法思路 偶数放右边,奇数放左边,可以先for遍历数组 ...

  2. java数组 初始化_用Java初始化数组

    java数组 初始化 具有使用C或FORTRAN等语言进行编程的经验的人熟悉数组的概念. 它们基本上是一个连续的内存块,每个位置都是某种类型:整数,浮点数或您所拥有的. Java中的情况与此类似,但有 ...

  3. Java小试牛刀—数组

    目录 1.前言 2.数组的基本概念 2.1 为什么使用数组 2.2 什么是数组 2.3 数组的创建及初始化 2.3.1 数组的创建 2.3.2 数组的初始化 2.4 数组的使用 2.4.1 数组中元素 ...

  4. 程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)

    网上看到有网页版的飞信,http://fetionlib.appspot.com/ 可以添加好友,群发和定时发送短信给飞信好友,还开放了API接口供程序调用,可以用它来监控机器是否正常服务定期给管理员 ...

  5. java集合——数组列表(ArrayList)+散列集(HashSet)

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java集合--数组列表(ArrayList)+散列集(HashSet) 的相关知识: 0.2 ...

  6. java 字符数组与字符串_用于字符串和数组的5种简单有效的Java技术

    java 字符数组与字符串 Java通常会排在前五种最流行的编程语言中,因此可以理解. 它是一种通用语言,非常容易学习,因为它是一种高级语言,并且可以满足许多用例. 由于这些原因,Java是一门很棒的 ...

  7. jni java返回数组_Android开发实践:Java层与Jni层的数组传递

    Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni ...

  8. Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...

      Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...

  9. JAVA学习-数组元素排序

    JAVA实现数组元素排序,把数组中已知的10个数字由小到大排序后输出 代码: public class ArraryRank {//定义公共类public static void main(Strin ...

最新文章

  1. 网站服务器基本防范配置
  2. 笔记-信息系统开发基础-架构设计-软件体系结构评估方式
  3. Android中实现保存和读取文本文件到内部存储器(实现简易的记事本为例)
  4. Python双版本下创建一个Scrapy(西瓜皮)项目
  5. olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作
  6. 自反而缩,虽千万人,吾往矣。
  7. IT职场人生系列之七:学外语
  8. 魔域java_java序列化
  9. 2018 n1ctf easy_hard_php 攻击流程图
  10. HOOK使用:全局键盘钩子
  11. 【直观详解】信息熵、交叉熵和相对熵
  12. JDK集合源码解析剖析
  13. Enhancing Underwater Images and Videos by Fusion
  14. Google Earth Engine(GEE)——注册GEE被拒绝,官网的回复给出答案
  15. 洛谷 P2440 木材加工 (二分答案)
  16. mac上的APP 变成大问号了
  17. FPGA:什么是IO单元、IO标准、Bank、VCCO、VREF
  18. 郑州大学计算机系好请假吗,郑州大学网上信息
  19. 数据分析工具集合:Tableau入门及其他工具简介
  20. linux tail命令语法

热门文章

  1. php 加入日志功能,php怎么写一个日志功能的函数
  2. rocketmq 消息 自定义_RocketMQ消息轨迹-设计篇
  3. shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
  4. Android OOM的解决方式
  5. Spring Boot 5:应用程序启动时初始化资源
  6. python2 openpyxl 复制excel内容到新的excel文件中 告警问题
  7. page,client,offset区别
  8. 黑马程序员—————— 多线程
  9. Ios17个常用代码整理
  10. UVA10785 The Mad Numerologist