选班长

  • 题目:
    • 思路:
  • 实现方法:
    • 1.创建一个数组,将所有人存入该数组,并给它们都标记为true
    • 2.定义一个报数器(counter)和一个计数器(register)。
    • 3.最后我们利用循环来找出最后一个被选中的人,并把它以弹框的形式输出
  • 完整代码如下:

题目:

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号(假设班上有20人)。

思路:

  1.首先:我们可以先将班上的人(20人)做标记装进一个数组里,每当报到3时,将这个人做标记,然后跳过继续报数,直到最后一个人时,将他取出。
  2.我们可以将每个数组初始化值都变为true,如果有20个人,那么数组中存储的值就是20个true,相当于人还在圈子里
  3.每次标记一个元素,我们就把该元素的值标记为false(这里我们规定,值不为false的元素就表示人还在里面)

实现方法:

1.创建一个数组,将所有人存入该数组,并给它们都标记为true

代码如下:

 var a=new Array(20);for(var i=0;i<a.length;i++){a[i]=true;}

2.定义一个报数器(counter)和一个计数器(register)。

为什么要分别定义一个报数器和一个计数器呢?
  1.计数器是用来判断,后面三个数标记为true时,将第三个标记为true的进行更改。也就相当于报数报到3时,退出圈子。
  2.报数器是用来在外层循环做判断用的,当报数器的数字小于数组长度减一时,也就是刚好只剩下最后一个数时,停止循环。
代码如下:

var counter=0,register=0;//报数器,计数器while(register<a.length-1){for(var i=0;i<a.length;i++){if(a[i]){counter++;if(counter==3){counter=0;register++;a[i]=false;}}}}

3.最后我们利用循环来找出最后一个被选中的人,并把它以弹框的形式输出

for(var i=0;i<a.length;i++){if(a[i]){alert("班长是第"+(i+1)+"号学生");}}

思考: 为什么被选中后的学生是第(i+1)个呢?
  1.数据存入数组中,数组的下标是从0开始计算的,虽然被选中的人是第i个,但实际上是第(i+1)个人。
  2.可以利用控制台打印数组来查看被选中的人(console.log(a))

完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>/* 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。  */var a=new Array(25);for(var i=0;i<a.length;i++){a[i]=true;}var counter=0,register=0;//报数器,计数器while(register<a.length-1){for(var i=0;i<a.length;i++){if(a[i]){counter++;if(counter==3){counter=0;register++;a[i]=false;}}}}console.log(a);for(var i=0;i<a.length;i++){if(a[i]){alert("班长是第"+(i+1)+"号学生");}}</script>
</body>
</html>

页面弹框显示:

控制台显示:

经典算法题:有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个人围成一圈 顺序排号 java_java基础编程题有n个人围成一圈顺序排号

    下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧. 下面是具体的题目,题目还是非常的简单的. 一.题目 有n个人 ...

  6. 算法训练 - 筛选号码 (有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。)

    问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.从下一个人开始继续报数,直到剩下最后一个人,游戏结束. 问最后留下的是原来第几号的那位. ...

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

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

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

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

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

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

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

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

最新文章

  1. JVM 常见异常及内存诊断
  2. 【error】error: field * has incomplete type
  3. xsemaphoretake返回_FreeRTOS 计数信号量
  4. matlab 显示多为,求助!!如何把多输入多输出系统的传函转换为状态空间表达式?...
  5. 周报速递丨北交所 SaaS 首股将出;央行等印发《金融标准化“十四五”发展规划》
  6. vc6怎么看错误在哪_周杰伦超话第一!微博超话在哪进入签到?怎么看排名?不会来看!...
  7. Entity Framework 6.3 和 EF Core 3.0 路线图
  8. 7-34 任务调度的合理性 (25 分)(思路加详解+兄弟们冲呀)
  9. 怎么通俗易懂地解释贝叶斯网络和它的应用?
  10. Jeewx 捷微管家操作配置文档(开源版本)
  11. Mongodb在Windows下安装及配置
  12. android 线程池 怎么用,android中的线程池 怎么用
  13. nginx配置及操作简要记录
  14. **Java有哪些悲观锁的实现_Redis 分布式锁的正确实现方式(Java 版)
  15. stm32,51单片机,AVR单片机( arduino )到底选哪个比较好
  16. 织梦采集侠破解版_最新dedecms织梦采集侠v2.6破解版
  17. H5唤起 uniapp 版的app 端
  18. Win10双系统安装教程(适用所有计算机)
  19. 7z文件格式及其源码的分析(六)-完结篇
  20. FIR滤波器,低通、高通、带通、带阻VC实现

热门文章

  1. WebRTC APM
  2. 用canvas画太极图(一步步详解附带源代码)
  3. win7+Ubuntu20.04双系统硬盘安装指南(含踩坑记录)
  4. java 繁体转简体_java 中文繁简体转换工具 opencc4j
  5. 【性能】【内存】swap解读
  6. 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
  7. 如何用计算机术语写论文,计算机毕业论文结论怎么写?
  8. java web 播放flv,实现网页中播放FLV文件的源代码
  9. 基于PT100铂电阻的高精度测温方法
  10. RK3399与MIPI DSI之间在DRM架构下的联结关系