相信大家都知道这是一个的算法问题,约瑟夫环的c语言实现是利用了指针链表的形式,java实现呢,我的这个是用了内部类.

算法描述:n个人围成一圈,每人有一个各不相同的编号,选择一个人作为起点,然后顺时针从1到k数数,每数到k的人退出圈子,圈子缩小,然后从下一个人继续从1到k数数,重复上面过程。求最后推出圈子的那个人原来的编号。

程序实现:

public class JosephCircle {

private class Node {

public Node nextnode;

public boolean flag;

}

private Node[] list;

public JosephCircle() {

list = new Node[30];

int i;

for (i = 0; i < 30; i++) {

Node node = new Node();

node.flag = true;

if (i > 0) {

list[i - 1].nextnode = node;

}

list[i] = node;

}

list[i - 1].nextnode = list[0];

}

public void start() {

Node node = list[29];

for (int i = 0; i < 135; i++) {

if ((i+1) % 8 == 0) {

node.flag = false;

node.nextnode = node.nextnode.nextnode;

} else {

node = node.nextnode;

}

}

}

public void print() {

Node node = list[29];

for (int i = 0; i < 30; i++) {

if (node.flag) {

System.out.print("#");

} else {

System.out.print("@");

}

node = node.nextnode;

}

}

public static void main(String[] args) {

JosephCircle jc = new JosephCircle();

jc.start();

jc.print();

}

}

约瑟夫环算法的Java实现代码.doc

下载Word文档到电脑,方便收藏和打印[全文共967字]

编辑推荐:

下载Word文档

约瑟夫环 java代码_约瑟夫环算法的Java实现代码相关推荐

  1. java二叉排序树_数据结构与算法—二叉排序树(java)

    前言 前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度.规则相对是简单的. 再数据结构中树.图才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的难度相比线性表大一 ...

  2. python3.4勾股定理代码_用于解答算法题目的Python3代码框架

    前言 最近在实习,任务并不是很重,就利用闲暇时间使用Python3在PAT网站上刷题,并致力于使用Python3的特性和函数式编程的理念,其中大部分题目都有着类似的输入输出格式,例如一行读入若干个数字 ...

  3. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)

    归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 (大O符号).1945年由约翰·冯·诺伊曼首次提出.该算法是采用分治法(Divide an ...

  4. bm25算法Java代码_搜索引擎相关度算法 -BM25 JAVA实现

    bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法. 它的出现主要是解决TF-IDF算法中 TF的影响可无限增大的不足,本质上 BM25是基于TF-IDF并做了改 ...

  5. java 权重_权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

  6. a*算法matlab代码_蚁群算法(含MATLAB代码)

    CSDN-专业IT技术社区-登录​blog.csdn.net

  7. java中的随机生成算法_随机生成算法的java代码太复杂了

    public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...

  8. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  9. java的hash算法实现_一致性Hash算法的Java实现详解

    package com.baijob.commonTools; import java.util.Collection; import java.util.SortedMap; import java ...

最新文章

  1. windows版本下使用xdebug
  2. Ubuntu16.04 配置SSH无密码登录
  3. 详细解析WSAAsyncSelect模型
  4. mysql inodb主键bug_MySQL的这个bug,坑了多少人?
  5. 【音视频安卓开发 (四)】AndroidStudio项目配置权限、jni库路径、ABI
  6. Webstorm设置开发模板
  7. TiDB在360云平台的落地
  8. vSwitch报文转发分析
  9. php 常用正则表达 邮箱 手机号啥的
  10. 【Java】JFileChooser的用法及借助JFileChooser选择文件并操纵打印机打印出来
  11. c10k java_c10k问题及其解决方案
  12. Excel 批量删除空白行,你用了 2 小时,同事 3 分钟就搞定了
  13. 【STM32】 STM32单片机IO引脚配置方式
  14. 转载(工信部):张欣 辽宁奇辉电子系统工程有限公司
  15. 我们采访了三位学生:他们写代码、95 后、来自大陆和台湾
  16. testing众测学院测试用例考核题目及答案
  17. ldpc译码讲解_LDPC码译码方法和编码方法与流程
  18. (原創) 如何自行在ThinkPad X61安裝Windows XP Professional SP3? (NB) (ThinkPad) (X61) (OS) (Windows)...
  19. Ubuntu 20.4 WIFI信号不稳定,ping路由器延迟比较慢解决办法
  20. Linux通过curl下载jdk

热门文章

  1. CSS如何实现波浪效果
  2. 深度剖析‘StringBuilder‘ can be replaced with ‘String‘ 提示
  3. Fibonacci sequence及相关问题介绍
  4. Python列表切片操作
  5. 第13贴:三极管工作原理的形象描述
  6. ab apache bench 增压测试方案,采用gnuplot数据汇总+excel生成折线图
  7. Python Matplotlib contour和contourf:绘制等高线
  8. Mathtype与word字号对照
  9. java语言中 说明或声明数组时内存大小,说明或声明数组时不分配内存大小,创建数组时分配内存大小。...
  10. 博客专栏第一篇文章——我眼里的DBA