今天在书上(书名< java程序设计经典300例 >李源编著)看了一个有趣的问题,那就是java版的约瑟夫问题,想必大一的小伙伴们早就用c写过了吧

今天我在复习一下

首先问题是这样的n个人围成一圈 编号为1-n,从k号开始报数,当报道数字为m时 该人出局  由该人的后一个人继续从1报道  依此循环 直到留下一人 (猴王)

那么思路是这样的  首先这是一个循环问题  从N号后又得回到1号 我们可以建立一个循环单链表 (数组形式就可以)    其次就是关于如何去报数 这个比较轻松 利用一个循环从1开始加当到m时则重置为1  再有就是如何判断以经出局的编号  我们可以将数组定义为整形数组 里面的初始值全置为1  当其出局时就置为0 大概问题的难点就是如何建立循环了

不多说

小码农还是以代码为主

int n;//人数

int k;//从编号为k的人开始报数

int m;//报道编号为m的人出局

int n1=n+1;

int a[n1];//为了方便 我们直接从1号开始 0号位置不用

for(int i=0;i<n1;i++)

a[i]=1;//将数组全置为1

for(int i=1;i<=m;i++){//从1到m

if(n==1)

break;//先写上循环出口最后一个人时退出

else if(i==m){

n--;//人出局 人数减一

i=1;//重置循环变量为1重新报数

a[k]=0;//k为随初始K值递变的报数的人的编号  当实际报道m时 该人物编号k的数组内容置0表示出局

System.out.println(k+" ");//显示出局顺序

}

do{//每报一个人k+1,若后一个人的编号已出局 则k+至后面最近的不出局的人的编号

k++;

k=k%n1;

}while(a[k]!=1)

}

//循环结束

System.out.println("最后编号为"+k);

其实看似题目简单 但对于我这种新手小白来说还是挺有难度的

希望大家好好学习

多练习  多操作

可尝试c版

JAVA中的约瑟夫环和猴子王问题的更多相关文章

  1. Java学习之约瑟夫环的两中处理方法

    package day_2; import java.util.Scanner; /** * @author Administrator * 约瑟夫环问题: 设编号为 1,2,3,....n的N个人围 ...

  2. JAVA中JDK开发环搭的搭建,jvm jre

    1.JDK的下载与安装: www.oracle.com 安装需要注意的是:不能把jdk安装到有空格或中文的文件夹中,建议大家在某个目录下创建一个JavaWeb的文件夹,然后把所学的java所有内容(后 ...

  3. Java循环链表实现约瑟夫环(搬运)

    public class Josephus { static class Node{ int val; Node next; Node(int v){ val=v; } }//成员类,代表节点,类似于 ...

  4. 约瑟夫环的java解决

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

  5. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们!然后今天群里突然有人提出了题目的这个问题:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 ...

  6. Java实现 LeetCode 面试题62. 圆圈中最后剩下的数字(约瑟夫环)

    面试题62. 圆圈中最后剩下的数字 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆 ...

  7. 约瑟夫环简介,问题以及java实现

    问题:一群猴子排成一圈,按1,2,--.,n依次编号.然后从第一只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,再把它踢出去-------.,如此不停的进行下去,直到最后只剩下一只猴 ...

  8. 约瑟夫环 --- 面向对象 --- java代码

    约瑟夫环 的 面向对象 解法 罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个 ...

  9. j使用数组实现约瑟夫环 java

    我们首先来看一下约瑟夫环问题: 给定m个人,m个人围成一圈,在给定一个数n,从m个人中的第一个人每第n个人便将其除去,求被最后一个出去的人的编号. 思路: 建立一个长度为m+1的数组,将其的内容初始化 ...

随机推荐

  1. 干货!直击JVM底层 —— Java Class字节码文件解析

    目录 前言 如何阅读class文件 基本概念 无符号数&表 常量池 魔数(magic number) & 版本号 常量池 访问标志 类引索&父类引索&接口引索集合 字段 ...

  2. springboot2 + grpc

    项目情况: springboot: 2.2.2 grpc-spring-boot-starter: 2.6.1.RELEASE 项目目录: mypro: - person  - grpc服务端 - l ...

  3. java 大数的学习

    import java.math.*; import java.util.*; public class study { public static void main(String[] args) ...

  4. 常用crud

    增:@Insert("insert into  t_user (`last_name`, `sex`) values(#{lastName}, #{sex})")   删:@Del ...

  5. 洛谷p1502窗口的星星 扫描线

    题目链接:https://www.luogu.org/problem/P1502 扫描线的板子题,把每个点看成矩形,存下边(x,y,y+h-1,li)和(x+w-1,y,y+h-1),在按横坐标扫线段 ...

  6. Java入门 - 语言基础 - 03.基础语法

    原文地址:http://www.work100.net/training/java-basic-syntax.html 更多教程:光束云 - 免费课程 基础语法 序号 文内章节 视频 1 第一个Jav ...

  7. Sigmoid非线性激活函数,FM调频,胆机,HDR的意义

    前几天家里买了个二手车子,较老,发现只有FM收音机,但音响效果不错,车子带蓝牙转FM,可以手机蓝牙播放音乐,但经过几次转换以及对FM的质疑,所以怀疑音质是否会剧烈下降,抱着试试的态度放了一个手机上的音 ...

  8. (树形DP入门题)Anniversary party(没有上司的舞会) HDU - 1520

    题意: 有个公司要举行一场晚会.为了让到会的每个人不受他的直接上司约束而能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会再邀请他的直接的上司,但该人的上司的上司,上司的上司的上司等都可以邀请. ...

  9. [bzoj1041] [洛谷P2508] [HAOI2008] 圆上的整点

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  10. IDEA工具java开发之 代码生成Generate

    ◆生成set/get ◆生成构造函数 ◆生成toString ◆生成hashCodes和equals