题目:

/*

  • 3、约瑟夫问题的一种描述是:
         编号为1,2,……,n的n个人按顺时针方向坐一圈,每人持有一个密码(正整数)。一开始任选一个作为报数上限值m,
    从第一个开始顺时针自1开始顺序报数,报到m是停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向
    的下一个人重新从1报数,如此下去,直到所有的人全部出列为止。设计一个程序,求出出列顺序。(20分)

    初值:m
      人数:n
      依次的密码:

*/

代码:

public class Three207 {public static void main(String[] args) {System.out.println("第一行为m初值,第二行人数n,第三行依次每人的密码(每个密码空格隔开):");//输出提示语句Scanner sc = new Scanner(System.in);              //获取控制台输入String str = "";int s = 1;ArrayList<String> strList = new ArrayList<String>();//动态数组while(s<=3){              str = sc.nextLine();strList.add(str);                              //添加至动态数组s=s+1;}sc.close();int m = Integer.parseInt(strList.get(0).trim());int n = Integer.parseInt(strList.get(1).trim());String string = strList.get(2).trim();String strpsw [] = string.split(" ");if (n == strpsw.length) {int [] psw = new int[n];  //密码数组for (int i = 0; i < strpsw.length; i++) {           //密码与编号差1 psw[i] = Integer.parseInt(strpsw[i]);}/** 编号:0 1 2 3 4 5密码:5 4 2 1 6 3*/int [] num = new int[n];  //编号数组for (int k = 0; k < num.length; k++) {num[k] = k+1;}/*        初始序列        开始第一次           。。。。。。* i:0 1 2 3 4 5   0 1 2 3 4 5编号:1 2 3 4 5 6   1 2 4 5 6 6*/int space = m%n-1;while (n>0) {String mString=",";if (n==1) {mString=" ";}System.out.print("输出序列为:"+num[space]+mString);int t=num[space]-1;        //先保存一下这次所数到的人的编号for (int i = space; i < n-1; i++) {num [i] = num[i+1];}n--;if (n != 0) {space = (space+psw[t]-1)%n;}}}else {System.out.println("密码个数输入有误!");}}}

运行结果:

3、约瑟夫问题的一种描述是:编号为1,2,……,n的n个人按顺时针方向坐一圈,每人持有一个密码(正整数)。一开始任选一个作为报数上限值m,从第一个开始顺时针自1开始顺序报数,报到m是停止报数。报m的人相关推荐

  1. 实验题目:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人

    实验题目:约瑟夫环问题:设编号为1,2,3,--,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数.从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一 ...

  2. 约瑟夫环!编 号是1,2,??,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向 自1开始顺序报数,报到m时停止报数。

    流程: ⑴建立模型,确定存储结构: ⑵ 对任意 n个人,密码为 m,实现约瑟夫环问题: ⑶出圈的顺序可以依次输出,也可以用一个数组存储. 示意图: 设计: 首先,设计实现约瑟夫环问题的存储结构.由于约 ...

  3. 约瑟夫环的c语言描述

    约瑟夫环的c语言描述 问题描述 代码(C语言) 问题描述 约瑟夫(Joseph)问题的一种描述是:编号为1,2,-,n的n个人按顺时针方向围坐一圈.每人持有一个密码(正整数).一开始任选一个正整数作为 ...

  4. C语言循环链表(不带头结点)解约瑟夫问题的一种变形

    一.问题描述 约瑟夫(Joseph)问题的一种描述是:编号为 1,2,-,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个整数作为报数上限 m,从第一人开始按顺时针方向 ...

  5. 约瑟夫问题的几种解决方法

    约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环.又称"丢手绢问题".). 编号为1.2.3--.n的n个人按 ...

  6. 约瑟夫问题I(由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的人出局。现在需要求的是最后一个出局的人的编号。)

    此题联系牛客网"孩子们的游戏(圆圈中最后剩下的数)". 题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一 ...

  7. Blah数集 描述: 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下: (1) a是集合Ba的基,且a是Ba的第一个元素; (2)如果x在集合Ba中,则

    Blah数集 描述: 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下: (1) a是集合Ba的基,且a是Ba的第一个元素: (2)如果x在集合Ba中,则2x+ ...

  8. 约瑟夫环c语言单链表的解题思路,太透彻了:约瑟夫环的三种解法

    [CSDN 编者按]极大概率出现在面试中的约瑟夫环问题来啦,本文三种方法描述解题思路,这样讲解绝对让面试官眼前一亮. 作者 | bigsai 责编 | 欧阳姝黎 前言 约瑟夫环问题是算法中相当经典的一 ...

  9. Verilog HDL三种描述方式

    一.数据流建模方式 在组合逻辑电路中,数据不会存储,因此输入信号经过电路变为输出信号类似于数据流动.可以通过连续赋值语句这种特性进行建模,这种建模方式通常被称为数据流建模. 连续赋值语句只能用来对连线 ...

最新文章

  1. HBase保存的各个字段意义解释
  2. Power Law and Exponential Decay of Inter Contac...
  3. TypeScript基础入门 - 泛型 - 泛型类型
  4. Metasploit的三种启动方式
  5. 空间句法软件_【特训营2:空间句法高阶班】GIS中的空间句法运用 丨城市数据派...
  6. 一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式
  7. python包怎么用_python的包怎么应用
  8. 奇数单增序列(信息学奥赛一本通-T1177)
  9. PencilWang博客目录
  10. SPFA - Luogu 3385 【模板】负环
  11. Andriod Recovery模式及ClockworkMod Recovery简介
  12. Hcse 交换知识点-4
  13. java初级项目 小说_webmagic项目实战(爬小说网站)
  14. python通过线程实现定时器timer的方法
  15. 一些有意思的知识的网站
  16. 详解文件存储空间管理中的位示图法
  17. 第27次CCF-CSP计算机软件能力认证(2022-09-18)
  18. shell mysql并发_shell脚本中的多进程并发处理
  19. PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进
  20. IDEA中maven配置解决jar包下载报错,亲测好用

热门文章

  1. 现实版进化论 三代普锐斯混动技术革新解析
  2. 利用python提取期货交易所的水单数据
  3. 中小企业管理解决方案
  4. jQuery.trim() 函数及trim()用法详解
  5. MySQL数据库大作业——学生管理系统GUI
  6. samba实现windows访问virtualBox共享文件夹
  7. 性别歧视在日本:“我是女生,所以社会不让我学医”
  8. 源码|并发一枝花之ConcurrentLinkedQueue
  9. HTTP认证之基本认证——Basic(*)
  10. PCIE下载的驱动安装