这是第一次java考试的试题,呜呼,因为没看过链表就不会做,现在回头看看,真不难。

约瑟夫问题:有n个人,其编号分别为1,2,3,…,n。这n个人按顺序排成一个圈。现在给定s和d,从第s个人开始从1依次报数,数到d的人出列,然后又从下一个人开始又从1开始依次报数,数到d的人又出列,如此循环,直到最后所有人出列为止。要求定义一个节点类,采用循环链表结构求解约瑟夫问题。

以下java版的答案

import java.util.Scanner;
public class LinkNode {              //单向链表的节点类public int data;                 //存放节点值public LinkNode next;            //存放节点值的引用public LinkNode(int k){         //构造方法 ,值为k的节点data = k;next= null;}
}class Josephus{public static void printJosephus(int n,int s,int d){        int i=1;                    //创建长为n的循环列表
        LinkNode q,tail;LinkNode head = new LinkNode(i);head.next = head ;tail = head;             //第一个节点,尾巴和头在一起while(i<n){i++;q = new LinkNode(i);    //增加一个新节点q.next = head ;        //节点的引用指向头tail.next = q;            //最后一个元素的引用指向了qtail = q;              //那么最后一个元素就是q
        }int j= 0;               //从s开始报数,依次输出出列人的编号LinkNode p = head;      //计数起点while(j<s-1){j++;p = p.next;}while(p.next != p){j = 1;while(j<d-1)   //计数的起始点
            {j++;p = p.next;}        System.out.print(p.next.data + " ");  // 输出出列的节点号p.next = p.next.next;p = p.next;                                //不断指向下一个节点
        }System.out.print(p.data);}public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();int a = input.nextInt();int b = input.nextInt();Josephus.printJosephus(n, a, b);}
}

转载于:https://www.cnblogs.com/LZYY/p/3276484.html

采用循环链表结构求解约瑟夫问题相关推荐

  1. 用java解决约瑟夫循环问题_Java采用循环链表结构求解约瑟夫问题

    本文实例讲述了Java采用循环链表结构求解约瑟夫问题的方法.分享给大家供大家参考.具体分析如下: 这是第一次java考试的试题,对于没看过链表的同学来说就不会做,现在回头看看,还真不难. 约瑟夫问题: ...

  2. 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)

    // algo3-11.cpp 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径) #include"c1.h" #include"func3-1.cpp" ...

  3. 一步一步求解约瑟夫(Joseph)问题

    约瑟夫(Joseph)问题的解决方法 问题描述 最初Joseph问题是这样的:有n个人(分别编号1,2--n)围成一圈,这些人轮流数数(编号为1的人开始,从1开始数),当数到m的人就会被处决.接着,后 ...

  4. 采用蒙特卡罗方法求解π值

    采用蒙特卡罗方法求解π值. Python 3.8.8版本. #----计算pi的值---- from random import random from math import sqrt from t ...

  5. 永磁直驱风力发电系统,永磁同步电机,风力发电系统,风力机仿真模型,采用背靠背结构

    永磁直驱风力发电系统,永磁同步电机,风力发电系统,风力机仿真模型,采用背靠背结构. 风力机mppt采用最佳尖速比控制,机侧采用零d轴控制:网侧采用电网电压定向矢量控制. 附相关文献. ID:99656 ...

  6. 求解约瑟夫(Joseph)问题---Java算法小练

    约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称"丢手绢问题". -百度百科 相信大部分人在刚开始接触Java算法都会遇到约瑟夫问题, ...

  7. 5.12编程求解约瑟夫问题:有12个人排成一圈,从1号开始报数,凡是数到5的就离开,然后继续报数,试问最后一个报数的是谁? 1,2,3,4,5

    1.0 package bookTest3;import java.util.Arrays;public class FivePointTwelve {/*编程求解约瑟夫问题:有12个人排成一圈,从1 ...

  8. 数据结构学习-循环链表:处理约瑟夫环问题

    目录 问题描述 一.基本概念 1.普通链表 2.单向循环链表 二.问题处理 1.创建链表 2.查找 3.删除 4.其他 三.实验环节 四.总结 问题描述 约瑟夫环问题的一种描述是:编号为1,2,... ...

  9. python中的圆周率怎么表示_如何采用Python语言求解圆周率的π值

    蒙特卡洛方法提供了一个利用计算机中随机数和随试验解决现实中无法通过公式求解问题的思路,本实例,通过采用蒙的卡罗方法采用Python语言来实现求解圆周率π的值 工具/原料 Python元件包 win7系 ...

最新文章

  1. Python 判断类型
  2. AAAI 2021 | 语义解析最新进展解读
  3. 很用心的写了 9 道 MySQL 面试题
  4. 听易中天品三国---看孔融,杨修之死
  5. MySQL优化之二:My SQL Server性能优化
  6. html中图片显示、隐藏
  7. Codeforces Gym 100342C Problem C. Painting Cottages 暴力
  8. truffle部署到测试网rinkeby
  9. java如何设计转账业务_Java实现转账业务
  10. 【OpenCV】Rect函数
  11. 电脑自动出现html文件,当前页面发生脚本错误 电脑总出现当前页面脚本错误怎么办?...
  12. taocat服务器的作用,随笔2_tww
  13. php添加页脚,WordPress网站页脚footer.php修改图文教程
  14. 三国经典战役\三国合肥会战\三国孙权大战张辽\三国孙权一败张文远
  15. 5款高逼格实用手机APP推荐,千万不能错过!
  16. reids 如何批量删除指定前缀的key
  17. Windows 下基于 MikTeX 的 Latex 环境配置小记
  18. python-OpenCV信用卡数字识别
  19. 华氏度摄氏度温度转换
  20. 前端的你,必须知道这些前端的坑!

热门文章

  1. docker內安装TOPT
  2. vmware 虚拟机三种网络模式: 桥接、 NAT、 仅主机 区别
  3. kotlin 扩展函数_在 Kotlin 中“实现”trait/类型类
  4. 卸载干净ssr之后出现无法上网
  5. Python算术运算符目录
  6. thumbnails 变黑_phpcms v9图片生成缩略图变成黑色解决方法
  7. python面向对象编程项目_Python学习之==面向对象编程(一)
  8. javascript座标_javascript JS元素位置和位置坐标
  9. MDC功能软件-感知融合算法介绍
  10. SQLite基础知识学习