约瑟环问题:

17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事,15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法,30个人围成一个圆圈,从第一个人开始依次报数,每数到第九个人,就将他扔入大海,如此循环进行,直到仅剩余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒

解析:

投海条件: 第九个人, 已投海不计入计算

结束条件: 15人

人的状态:已投海和未投海

看到两种状态就应该想到可以使用一个boolean数组记录状态, 默认都是未投海

遍历该数组,如果当前位置已经为true(已投海),则继续下一位,如果为false则判断是否是第九个人是的话将其投海, 死亡人数+1总人数-1, 不是第九个将其作为计算因子继续向下

以下为Java核心代码:

/*** @author: Ares* @description:* @date: 2020/5/21 17:39* @param: [personNum, deathNum, surviveNum]* 总人数, 需要死去的那个人, 存活人数* @return: void 响应参数*/public void deal(int personNum, int deathNum, int surviveNum){boolean[] flags = new boolean[personNum];// 有效坐标, true是已经死亡的人不会被计算int vaildPos = 0;int pos = 0;int alreadyDeath = 0;while(alreadyDeath < personNum - surviveNum){int index = pos % personNum;if (!flags[index]){if (vaildPos % deathNum == 8){flags[index] = true;alreadyDeath++;System.out.println("我是第" + (index + 1) + "个人, 我没了");}vaildPos++;}pos++;}}

就酱

约瑟环问题 Java解法相关推荐

  1. 约瑟环问题JAVA(数组)

    所有人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数), 凡报到 3 的人退出圈子,剩下的人继续报数,最后留下的当选为队长. 请你通过编写程序,求出一组人中的队长是原来第几位同学.(约瑟 ...

  2. c/c++常用算法(14) -- 经典数据结构(约瑟环夫问题)

    一.简单的约瑟环夫 1.故事描述: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被 ...

  3. 约瑟环的python实现(举例说明)

    题目是: N个人围成一圈报数,报到某一个数m的就出局,问你最后剩下来的人的号码? 网上通用约瑟夫环的算法是: //函数接收n和m,返回最后出圈的是第几个人 /*e.g. yuesefu(5,2)=3 ...

  4. Josephus约瑟环问题

    约瑟环问题描述:n个人有序围成一圈报数,报到M的就退(自)出(杀),再从头开始报数,由此循环,求剩下最后一人的序号. 第一种直觉的想法是弄个list循环: int Josephus(unsigned ...

  5. 约瑟环问题(全部代码在本文下方)

    用循环链表编程实现约瑟夫问题,n个人围成一圈,从某人开始报数1,2,.., m,数到m的人出圈,然后从出圈的下一个人(m+1)开始重复此过程,直到全部人出圈,于是得到一个出圈人员的新序列,如当n=8, ...

  6. Offer 62. 约瑟环(规律问题-递归-中等)

    Offer 62. 圆圈中最后剩下的数字 思路1:⭐ 创建一个下标为 0~n-1的数组 | 当n=5时 nums = [1 1 1 1 1] 代表下标为i的数是否已经被删除⭐ 通过不断(外层设置一个循 ...

  7. 约瑟环c语言,顺序表实现约瑟环的问题,C语言.doc

    计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 10级计算机工程02 试验地点 计算机大楼计工教研室 学生学号 1005080222 指导教师 蔡琼 学生姓名 肖宇博 试 ...

  8. 约瑟环c语言,数据结构C语言 约瑟环问题 谢谢大家 一定要AC呀

    满意答案 shadow88kia 2013.11.12 采纳率:50%    等级:12 已帮助:4173人 这是我以前的约瑟夫问题,输入输出稍微不一样. #include #include type ...

  9. 猴子选大王(约瑟环问题)

    输入 输入两个整数n,m (1<=m,n<=100) 输出 输出一行n个整数,按顺序输出每个出圈人的编号 样例输入 10 3 样例输出 3 6 9 2 7 1 8 5 10 4 #incl ...

最新文章

  1. 《UML面向对象设计基础》—第1章1.5节消息
  2. 【渝粤题库】国家开放大学2021春2302供应链管理题目
  3. 使用 jQuery Mobile 与 HTML5 开发 Web App (四) —— jQuery Mobile 表单上
  4. Oracle 查找带有CLOB字段的所有表
  5. 计算机中文件访问时间是什么情况,【反计算机取证必看】Windows系统中文件时间属性的变化及影响因素.pdf...
  6. http.server模块
  7. volatile和原子操作
  8. Android存储(1)-- 你还在乱用Android存储嘛!!!
  9. 添加key_所写为方便日后查阅(添加SSHkey)
  10. java下载什么软件有题库_java题库app
  11. 纯CSS下拉导航代码
  12. 王者荣耀KPL秋季赛总决赛预测(AG VS DYG)
  13. PHP函数array_intersect_assoc
  14. 用r语言画时序图和自相关图,并检验纯随机性
  15. Arch-base-vs-iso
  16. CSDN《原力计划—打卡挑战》为你而来,新升级, 多流量,抓住春季的小尾巴,冲冲冲!
  17. 使用AES加密配置文件
  18. 如何在 GitHub 上高效阅读源码?
  19. 世界是由什么组成的java_世界是由什么组成的?
  20. kanzi与第三方app融合,比如地图导航视频、互联娱乐视频

热门文章

  1. hibernate用setResultTransformer转换
  2. python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...
  3. 暂停线程suspend()和恢复线程resume()
  4. 微信什么情况下会出现“对方正在输入”?
  5. guava Stopwatch
  6. 调用摄像头使用face_recognition 或 opencv中haar人脸特征实时检测识别人脸、给人脸打马赛克/给人脸贴图
  7. exchange系列(三)exchange邮件服务器的邮件传输管理
  8. 梯度下降法的三种形式BGD、SGD、MBGD及python实现
  9. 解密iPhone的固件
  10. SQL server获取数据库数据