经典算法题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。
选班长
- 题目:
- 思路:
- 实现方法:
- 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的人退出圈子,问最后留下的是原来第几号。相关推荐
- 详细讲解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个人围成一圈 顺序排号 java_java基础编程题有n个人围成一圈顺序排号
下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧. 下面是具体的题目,题目还是非常的简单的. 一.题目 有n个人 ...
- 算法训练 - 筛选号码 (有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。)
问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.从下一个人开始继续报数,直到剩下最后一个人,游戏结束. 问最后留下的是原来第几号的那位. ...
- 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们! 然后今天群里突然有人提出了题目的这个问题: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人 ...
- 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。
[绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...
- 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数为n. 输出 最后一个人的初始编号. 样例输入 3 样例 ...
- ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...
最新文章
- JVM 常见异常及内存诊断
- 【error】error: field * has incomplete type
- xsemaphoretake返回_FreeRTOS 计数信号量
- matlab 显示多为,求助!!如何把多输入多输出系统的传函转换为状态空间表达式?...
- 周报速递丨北交所 SaaS 首股将出;央行等印发《金融标准化“十四五”发展规划》
- vc6怎么看错误在哪_周杰伦超话第一!微博超话在哪进入签到?怎么看排名?不会来看!...
- Entity Framework 6.3 和 EF Core 3.0 路线图
- 7-34 任务调度的合理性 (25 分)(思路加详解+兄弟们冲呀)
- 怎么通俗易懂地解释贝叶斯网络和它的应用?
- Jeewx 捷微管家操作配置文档(开源版本)
- Mongodb在Windows下安装及配置
- android 线程池 怎么用,android中的线程池 怎么用
- nginx配置及操作简要记录
- **Java有哪些悲观锁的实现_Redis 分布式锁的正确实现方式(Java 版)
- stm32,51单片机,AVR单片机( arduino )到底选哪个比较好
- 织梦采集侠破解版_最新dedecms织梦采集侠v2.6破解版
- H5唤起 uniapp 版的app 端
- Win10双系统安装教程(适用所有计算机)
- 7z文件格式及其源码的分析(六)-完结篇
- FIR滤波器,低通、高通、带通、带阻VC实现
热门文章
- WebRTC APM
- 用canvas画太极图(一步步详解附带源代码)
- win7+Ubuntu20.04双系统硬盘安装指南(含踩坑记录)
- java 繁体转简体_java 中文繁简体转换工具 opencc4j
- 【性能】【内存】swap解读
- 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
- 如何用计算机术语写论文,计算机毕业论文结论怎么写?
- java web 播放flv,实现网页中播放FLV文件的源代码
- 基于PT100铂电阻的高精度测温方法
- RK3399与MIPI DSI之间在DRM架构下的联结关系