算法题:有 10个人围成一个圈,从 1 开始报数,报到 4 的这个人就要退出。然后其他人重新开始, 从 1 报数,到 4 退出。问:最后剩下的是 10 人中的第几个人?

经典算法题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。 选班长题目:思路:实现方法:方法一: 题目: 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号(假设班上有20人)。 思路:   首先:我们可以先将班上的人(20人)做标记装进一个数组里,每当报到3时,将这个人做标记,然后跳过继续报数,直到最后一个人时,将他取出。 实现方法: 方法一: 1.创建一个数组,将所有人存入该数组,并给它们都标记为true: var a=new Array(20); for(var i=0;i 阅读详情
import java.util.ArrayList;


public class ss {

    /**
     *  有 10个人围成一个圈,从 1 开始报数,报到 4 的这个人就要退出。然后其他人重新开始,
     *  从 1 报数,到 4 退出。问:最后剩下的是 10 人中的第几个人?
     * @param args
     */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		 ArrayList list = new ArrayList();
	        for(int i = 1;i <= 10;i++){
	            list.add(i);
	        }
	        System.out.println(list);
	        int count = 1;
	        int index;
	        for( index = 0;list.size() > 1 ;index++){
	            if(index == list.size()){
	                index = 0;
	            } 
	            if(count % 4 == 0){
	                list.remove(index);
	                index--;
	            }
	            count++;
	        }
	        System.out.println(list.get(0)); //第5个人
	}

}

 

 

Java编程之有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。解题思路:假设一共有n个人,则定义一个长度为n的boolean数组。全部元素的值为true。报数为3的元素其值为false。一直循环下去,直到只剩下一个值为true的元素。则该原色的下标加一就是最后剩下的人的号码。下面是代码:package com.test; /** * 阅读详情

相关推荐

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

解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多圈怎么实现 也是个问题 这些都是算法的相关问题 突然还有一个很感慨的事情 虽然高数课很久没上了 但是之前高数老师说的一句让我感受颇多 就是数学需要归纳总结 理解 我觉得这个对于很多科目都适用 不仅高数 c也可以 甚至是文科 比如这里需要循环很多圈 以后的另一个问题可能也会面临这个困难 怎么循环很多圈 还有就

TPON的博客 4272

约瑟夫环报数游戏

报数游戏 十个人围成一圈,从1到3开始报数,依次循环,报到3的人被淘汰,一直淘汰到剩余一个人结束游戏。 public class Circle { public static int circle(int []arr) { int count=0; int count1=0; int index=0; while (true)...

Dashibin 793

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 问题: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 解题思路: 假设一共有n个人,则定义一个长度为n的boolean数组。全部元素的值为true。报数为3的元素其值为false。一直循环下去,直到只剩下一个值为true的元素。则该原色的下标加一就是最后剩下的人的号码。 下面是代码: package com.test; public class T

Kobe1916的博客 4906

由10个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定n,求出所有人的出圈顺序.C语言

开始我们要先理清这是一个不断轮转的问题。因为十个人的编号属于多个元素,所以我们考虑用数组来做。而在不断轮转的过程中要考虑的就是:1,当我们在报数时哪些是因为已出圈而不报数的,当报数到n时这个人就出圈。于是我们需要构造一个计数的语句,只有这个数与n相等时才表示这个人是需要出圈的然后就输出该元素,此时计数归零重新计数相当于重新报数。2,由1可知这是一个循环体,而这个循环什么时候结束呢?这就需要另外一个计数的变量作为循环进行的条件,当所有人出圈也就是这个用于计数的变量等于10时就可以跳出循环,结束此问题。初步的程

weixin_75279438的博客 1213

有10个小孩围成一圈并依次编号,教师指定从第2个小孩开始报数,报到第3个小孩即令其出列

有10个小孩围成一圈并依次编号,教师指定从第2个小孩开始报数,报到第3个小孩即令其出列。然后从下一个孩子继续报数,数到第3个小孩又令其出列,如此直到所有的孩子都出列。求小孩出列的先后顺序。

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 233

Java有 N 个程序猿围成一圈顺序循环报数,从第一个猿开始报数(从 1 到 4 报数,猿都是顺序排列成一圈的),凡报到 4 的猿退出圈子,问最后留下的是原来第几号的那位

package interview; import java.util.*; //有 N 个程序猿围成一圈顺序循环报数,从第一个猿开始报数(从 1 到 4 报数,猿都是顺序排列成一圈的), // 凡报到 4 的猿退出圈子,问最后留下的是原来第几号的那位? public class Main { public static void main (String[] args) { ...

qq_36388734的博客 471

STM32CubeMx+stm32f407+FreeRTOS+LAN8720实现LWIP以太网UDP TCP数据收发功能

单片机实现LWIP的调试

qq_40600203的博客 3068

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

有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 分析: 将每个人编上坐标,并且给每个人定下最开始的下标,等只剩下最后一个人的时候,用他的坐标去找相应人的编号 下标 0 1 2 3 4 5 6 7 8 9 编号 1 2 3 4 5 6 7 8 9 10 第一次 1 1 2 -...

萌萌咚咚的博客 4992

Vivado2023.2与Vitis协同开发:从Hello World到BOOT.BIN的完整流程解析

本文详细解析了使用Vivado 2023.2与Vitis协同开发ZYNQ/MPSoC平台的完整流程。从环境安装、硬件设计、软件编写、在线调试到生成独立的BOOT.BIN启动文件,手把手指导开发者完成从Hello World到系统固化的全步骤,并提供了常见问题的避坑指南,帮助初学者快速掌握软硬件协同开发的核心技能。

weixin_29197051的博客 176

Chatbox使用指南

Chatbox使用指南

weixin_65289420的博客 2万+

1051数字四的游戏

#include <stdio.h> /* 作者: 厦门理工学院 计算机与信息工程学院 黄潮钦 程序描述: 一年一度的厦门理工学院程序设计大赛又开始了 今年是第四届。今年赛会组织方决定用一种新规则决定获胜的选手。 他们将参赛选手从1编号到N并围成一圈,从第一个人开始报数, 报到4的人退出,下一个人从 1 开始重新报数,报到4 的人退出。 如此循环,直到留下最后一个人,他就是获胜者。比如输

FnLock的博客 1045

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2178

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。——C语言

1 概述 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。——C语言 2 解法 //C程序设计第五版(谭浩强) //章节:第八章 善于利用指针 // 所有练习均要求用指针方法处理 //练习8.5 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几...

我是张跑跑 2万+

EverOS:为AI智能体构建长期记忆系统的完整指南

长期记忆是AI智能体实现持续学习和自我演进的核心能力,它通过结构化存储和关联检索历史交互信息,使智能体能够跨越单次对话的局限。其技术原理通常涉及向量数据库、记忆提取算法和知识图谱等组件,用于对非结构化对话内容进行编码、组织和索引。这一能力的技术价值在于显著提升了智能体的个性化服务水平、任务完成连贯性以及从经验中学习的能力,是实现真正“智能”伙伴的关键。在应用场景上,长期记忆系统广泛应用于个性化聊天伴侣、持续学习的编程助手、游戏NPC角色塑造以及客户服务机器人等领域。本文以EverOS为例,深入解析了其提供的

weixin_28679635的博客 449

C++程序发生内存越界,一定会导致程序崩溃吗?详解内存越界

内存越界是否一定会导致程序崩溃吗?详解内存越界

dvlinker的技术专栏 1万+

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

初学C语言第一次发表博客,可能讲的不清楚,不清楚的大家可以问 题目描述 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 输入 初始人数为n。 输出 最后一个人的初始编号。 样例输入 3 样例输出 2 题目分析:首先我们可以把1 - n 每个元素先赋值为1; 然后查找数到3的人,把他的序号所赋值的1变为0;当还剩下最后一个人时,输出他的序号。 围成一个圈,可以使用循环当i循环到n + 1的时候,让i再次等于1,直到只剩下最后一个人,循环b

m0_51275778的博客 1万+

14、固态变压器(SST)供电的直流微电网控制策略解析

本文详细解析了基于固态变压器(SST)供电的直流微电网的分层功率管理与控制策略。重点介绍了二次控制和三次控制算法的原理及实现方式,探讨了将SST作为固态同步电机(SSSM)的控制概念及其频率调节方法。通过小型直流微电网的实验案例验证了控制策略的有效性,并对不同三次控制方法的优缺点进行了比较。最后,文章提出了未来控制策略的优化方向,包括通信技术提升、多目标优化和智能算法的应用,为直流微电网的可靠、高效运行提供了理论支持和实践指导。

star的博客 551

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

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 代码一: n=int(input('输入数字:'))#输入数字 a=list(range(1,n+1))#建立一个列表,存放的是号码数 count=0;#构造一个全局变量,使得其储存每一位报的数 while len(a)&gt;1:#循环直到列表只剩一个元素 b=a[:]#复制...

qq_43422201的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

(C语言)(指针的方式处理)有n个人围成一圈,顺序排号,从第一个人开始报数,凡是报道三的人退出圈子,问最后留下的是原来第几号的那位

(指针的方式处理)有n个人围成一圈,顺序排号,从第一个人开始报数,凡是报道三的人退出圈子,问最后留下的是原来第几号的那位

爱上小公举 6943

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

这道题是谭浩强版C语言指针部分的练习题。拿到这道题,我第一印象是用链表来解决。不过既然是C语言的课后题,我们用数组加指针的思路来解决也无妨。 解题思路如下:定义一个函数,接受人数n。我们初始化一个从1顺序排到n的数组,方便以后的操作。 思路就是按顺序循环报数,每当报到3的时候,让当前元素退出(将值置为0代表退出)。同时用一个值来记录当前队伍中还剩多少人,当队伍中还剩一人的时候,循环结束。 从...

sinat_32092165的博客 6323

有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。

【问题描述】有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。 【输入形式】输入人数n 【输出形式】输出依次退出的人的编号,和最后留下的人的编号 【样例输入输出】 #include <stdio.h> int main() { void number_off(int *p, int n); int num[100],*p=num,n,i; printf("Inpu

Leuchten的博客 6994

java小题, 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。

/*  有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。  然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人? 思路:1.建一个集合,把100个要放在里面。 2.建一个新集合,循环数数,把每次数到14退出的人添加到新集合中。 3.用100个人的那个集合,删除掉退出人的那个集合,最后得到一个剩下13个人的集合。  */ public cla

2016年老周要订单哗啦啦 4133

Java练习之:有10个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出

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

SNAYi 2040

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

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

m0_58734370的博客 3428

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

package 有n个人围成一圈顺序排号从第一个人开始报数; /** * * @author 何虎 * */ public class Person { private int id; private Person prev; private Person next; public Person getPrev() { return prev; } publ

hexiaohu2009的专栏 7232
上一篇: 美团面试常见问题总结
下一篇: 数据库相关优秀文章分享
coderLee0607
博客等级 码龄14年 88粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值