题目:
    有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的人退出圈子,问最后留下的是原来第几号的那位。相关推荐

  1. 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位

    有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...

  2. c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。

    解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多 ...

  3. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成

    题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...

  4. 有n个人,顺序排列, 并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子+扩展版本

    https://blog.csdn.net/qq_44037213/article/details/106551760?fps=1&locationNum=2 有n个人(n<=1000) ...

  5. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...

    首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们! 然后今天群里突然有人提出了题目的这个问题: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人 ...

  6. 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。

    [绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...

  7. Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

    面试的时候碰到这道题,后来百度了一下感觉答案不对,而且也比较缺少java版本.就自己写了下. 题目描述:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈 ...

  8. ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...

  9. python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...

    Python 练习实例69 题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 程序分析:无. 程序源代码:#!/usr/bi ...

最新文章

  1. zencart分类页产品页去掉url中的id号
  2. 潜移默化学会WPF--线程巧用(一)
  3. 在springboot项目中如何创建子项目
  4. 网易云信与林鹿科技联手推出云对讲服务
  5. qt 信号多个链接槽_Qt原理窥探信号槽的实现细节
  6. sqlserver 常用存储过程集锦
  7. 在QLabel上点击获得的效果
  8. STM32学习1之ADC+DMA(使用定时器触发)
  9. 穷人为什么会越穷,穷的时候以下三个事情不能干
  10. Python中索引的学习笔记
  11. WebWork配置文件详解
  12. php curl设置headers,php curl如何设置头部信息
  13. C语言程序设计(第三版)何钦铭著 习题4-3
  14. UVA ~ 816 ~ Abbott's Revenge (BFS + 打印路径)
  15. 阿里云无影云桌面分配用户是什么?
  16. linux 7进入目录的命令,centos7目录统计之du命令
  17. error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
  18. 微信小程序开发之——仿微信视频录制上传
  19. <医学断层图像三维重建面绘制算法的研究>——第一遍阅读
  20. (转)如何治疗颈椎突 - 对程序员来说很有用

热门文章

  1. 计算机图形学+简单算法实现,《计算机图形学》课程设计-简单几何体的消隐算法实现.doc...
  2. 计算机前沿国际会议: 图灵测试测试题 ,人工智能得分:0分
  3. 数据火器库八卦系列之瑞士军刀随APP携带的SQLite
  4. google、bing、baidu、shodan、censys、ZoomEye 搜索引擎 高级用法
  5. 防疫宣传二维码有哪些优势?
  6. 怎么用计算机的记录,如何查看电脑使用记录,手把手教你查看电脑使用记录的方法...
  7. 松下小型plc程序案例,plc型号为fp-xh c60t,案例中有两个plc
  8. Delphi中的DBGrid如何实现使用鼠标滚轮上下滚动
  9. 绿茶、红茶、茉莉花茶的简述分享
  10. 浅浅试了一下Python机器人自动写作,能加入作协吗?我看行