问题描述:一堆小孩围成一个圈,从第一个小孩开始数,每数到第三个便把第三个孩子删去,数到只剩一个小孩为止,并求该孩子的具体编号。

解决办法

1.

package test;
public class Compare {
public static void main(String[] args) {
boolean[] array=new boolean[];
for(int i=;i<array.length;i++) {
array[i]=true;
}
int leftcount = ;
int countnum = ;
int index = ; while(leftcount > ) {
if(array[index]) {
countnum ++;
if(countnum == ) {
countnum = ;
array[index] = false;
leftcount--;
}
}
index ++;
if(index == ) {
index = ;
}
}
for(int i=;i<array.length;i++) {
if(array[i]) {
System.out.println(i);
}
}
} }

2.

package test;

public class Studentcircle {
public static void main(String[] args) {
makecircle b=new makecircle();
int countnum=;
student m=b.first;
while(b.count>) {
countnum++;
if(countnum==) {
countnum=;
b.delete(m);
}
m=m.right;
}
System.out.println(b.first.id);
} }
class student{
int id;
student left;
student right;
}
class makecircle{
int count=;
student first,last;
makecircle(int n){
for(int i=;i<n;i++) {
add();
}
}
void add() {
student x= new student();
x.id=count;
if(count<=) {
first=x;
last=x;
x.left=x;
x.right=x;
}else {
last.right=x;
x.left=last;
x.right=first;
first.left=x;
last=x;
}
count++;
}
void delete(student x) {
if(count<=) {
return;
}else if(count==) {
first=last=null;
}else {
x.left.right=x.right;
x.right.left=x.left; if(x==first) {
first=x.right;
}else if(x==last) {
last=x.left;
}
}
count --;
} }

Java解决小孩围圈问题的更多相关文章

  1. Java简单算法--出圈问题

    package cn.magicdu.algorithm; import java.util.LinkedList; import java.util.List; /** * 出圈问题,数到某个数字的 ...

  2. c 围圈报数

    #include<stdio.h> /*围圈报数*/ void left(int *p,int m,int n) { int i,j,count; i = j = count = ; ) ...

  3. Java解决CSRF问题

    项目地址: https://github.com/morethink/web-security-csrf CSRF是什么? CSRF(Cross-site request forgery),中文名称: ...

  4. 纯Java实现微信朋友圈分享图

    纯Java实现微信朋友圈分享图 1.实现分享图的效果 2.开发环境 2.1 JDK * oracle's jdk 1.8以上 2.2 字体 * 若选择了微软雅黑字体又是代码部署到Linux,则需要安装 ...

  5. java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ...

  6. JAVA | Java 解决跨域问题

    JAVA | Java 解决跨域问题 Table of Contents 引言 什么是跨域(CORS) 什么情况会跨域 解决方案 前端解决方案 后端解决方案 具体方式 一.使用Filter方式进行设置 ...

  7. Java解决大文件读取的内存问题以及文件流的比较

    Java解决大文件读取的内存问题以及文件流的比较 传统方式 读取文件的方式一般是是从内存中读取,官方提供了几种方式,如BufferedReader, 以及InputStream 系列的,也有封装好的如 ...

  8. 约瑟夫环的java解决

    总共3中解决方法,1.数学推导,2.使用ArrayList递归解决,3.使用首位相连的LinkedList解决 import java.util.ArrayList; /** * 约瑟夫环问题 * 需 ...

  9. Java 解决约瑟夫问题

    约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环.又称“丢手绢问题”.) 有这样一个故事,15个教徒和15个非教徒在深海遇险必须讲 ...

随机推荐

  1. 关于HSTS

    HSTS(HTTP Strict Transport Security) 当用户在浏览器中输入一个域名,如果没有注明前缀(也就是没输入"http"的时候)的时候,浏览器会默认按照h ...

  2. Html5——音频标签使用

    Ogg 文件,适用于Firefox.Opera 以及 Chrome 浏览器. 要确保适用于 Safari 浏览器,音频文件必须是 MP3 或 Wav 类型. audio 元素允许多个 source 元 ...

  3. HBase核心知识和应用案例

    Hbase 热点问题? Hbase 预分区 Hbase Rowkey 设计原则 Hbase 常见避免热点问题方法 Hbase 总结 Hbase 连续查询的Rowkey设计 Hbase 随机查询的Row ...

  4. Javascript的闭包及其使用技巧实例

    Javascript的闭包及其使用技巧实例 一.闭包的基本概念 闭包(Closure)是一个引用了自由变量的函数,记录了该函数在定义时的scope chain.又称词法闭包(Lexical Closu ...

  5. tp5 计算两个日期之间相差的天数

    //两个日期之间相差的天数 function diffBetweenTwoDays ($day1, $day2) { $second1 = strtotime($day1); $second2 = s ...

  6. crawlspider 多分页处理

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法二:基 ...

  7. swagger常用注解

    @Api:修饰整个类,描述Controller的作用 @ApiOperation:描述一个类的一个方法,或者说一个接口 @ApiParam:单个参数描述 @ApiModel:用对象来接收参数 @Api ...

  8. ubantu 操作

    应用程序启动器“monodevelop.desktop”还没有被标记为可信任的. 于是在网上查询解决方案,在ubuntu中文论坛找到一个帖子提到这个问题的解决方法,尝试之解决. 帖子地址:http:/ ...

  9. [Unity工具]CSV工具类

    参考链接: https://www.cnblogs.com/lulianqi/p/6385503.html http://blog.csdn.net/paul342/article/details/2 ...

  10. Http协议基础知识

    r equest POST https://re.csdn.net/csdnbi HTTP/1.1方法 url/uri 协议的版本号 1.1Host: re.csdn.netConnection: k ...