约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
题目:
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解题思路:
利用数组的“0”和“1”的数值表示玩家存在与不存在的两种状态,对数组进行多次重复循环,每次循环到最后一位数组元素后又从下标0开始循环,每次循环利用计数累加,计数器遇3重并把人数减1,知直到人数减到1时循环结束。
代码如下:
package test;import java.util.Scanner;/**题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。*/public class lianxi33 {public static void main(String[] args) {t1();}public static void t1() {Scanner s = new Scanner(System.in);System.out.println("请输入游戏人数: ");int n = s.nextInt();int pNum = n; //存在的人数int index = 0; //数组下标int countNum = 0; //计数器int[] ary = new int[n];while (pNum > 1) { //当剩下最后一个人循环结束if (ary[index] == 0) { countNum++; if (countNum == 3) { //每3次重置一次计数器 countNum = 0; ary[index] = 1; pNum--; //每计算到3就退出1位玩家} } index++; if (index == n) { //每次对数组循环结束把下标重置index = 0; } } for (int i = 0; i < n; i++) {if (ary[i] == 0) { System.out.println("原排在第" + (i + 1) + "位的人留下了。"); } }}}
约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。相关推荐
- 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位
有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...
- c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。
解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多 ...
- 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...
- 有n个人,顺序排列, 并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子+扩展版本
https://blog.csdn.net/qq_44037213/article/details/106551760?fps=1&locationNum=2 有n个人(n<=1000) ...
- 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们! 然后今天群里突然有人提出了题目的这个问题: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人 ...
- 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。
[绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...
- Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
面试的时候碰到这道题,后来百度了一下感觉答案不对,而且也比较缺少java版本.就自己写了下. 题目描述:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈 ...
- ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...
- python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...
Python 练习实例69 题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 程序分析:无. 程序源代码:#!/usr/bi ...
最新文章
- zencart分类页产品页去掉url中的id号
- 潜移默化学会WPF--线程巧用(一)
- 在springboot项目中如何创建子项目
- 网易云信与林鹿科技联手推出云对讲服务
- qt 信号多个链接槽_Qt原理窥探信号槽的实现细节
- sqlserver 常用存储过程集锦
- 在QLabel上点击获得的效果
- STM32学习1之ADC+DMA(使用定时器触发)
- 穷人为什么会越穷,穷的时候以下三个事情不能干
- Python中索引的学习笔记
- WebWork配置文件详解
- php curl设置headers,php curl如何设置头部信息
- C语言程序设计(第三版)何钦铭著 习题4-3
- UVA ~ 816 ~ Abbott's Revenge (BFS + 打印路径)
- 阿里云无影云桌面分配用户是什么?
- linux 7进入目录的命令,centos7目录统计之du命令
- error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
- 微信小程序开发之——仿微信视频录制上传
- <医学断层图像三维重建面绘制算法的研究>——第一遍阅读
- (转)如何治疗颈椎突 - 对程序员来说很有用
热门文章
- 计算机图形学+简单算法实现,《计算机图形学》课程设计-简单几何体的消隐算法实现.doc...
- 计算机前沿国际会议: 图灵测试测试题 ,人工智能得分:0分
- 数据火器库八卦系列之瑞士军刀随APP携带的SQLite
- google、bing、baidu、shodan、censys、ZoomEye 搜索引擎 高级用法
- 防疫宣传二维码有哪些优势?
- 怎么用计算机的记录,如何查看电脑使用记录,手把手教你查看电脑使用记录的方法...
- 松下小型plc程序案例,plc型号为fp-xh c60t,案例中有两个plc
- Delphi中的DBGrid如何实现使用鼠标滚轮上下滚动
- 绿茶、红茶、茉莉花茶的简述分享
- 浅浅试了一下Python机器人自动写作,能加入作协吗?我看行