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

约瑟夫问题 约瑟夫问题 问题描述 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 题目:N个人围成一圈,从第一个开始报数,第M个出局,然后下一个人重新报数 n=eval(input("请输入围坐总人数:")) num=[] for i in range(n): num.append(i+1) i=0 k=0 m=0 while m<n-1: if num[i]!=0: k+=1 if k==5 阅读详情

题目:

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

凡报到3的人退出圈子,问最后留下的是原来第几号。

程序如下:

#include <stdio.h>



int main() 
{ 
	int a[100]; 
	int i,n,q;
	int p = 0; 
	printf("input number:"); 
	scanf("%d",&n); 
	q = n; 
	for (i = 0; i < n; i++) 
		a[i] = i+1; 
	for(i = 0; ; i++) 
	{ 
		if(i == n) 
			i = 0; 
		if(a[i] != 0)
			p++;
		else 
			continue; 
		if(p%3 == 0)
		{
			a[i] = 0; q--;
		} 
	
	if(q == 1) 
		break; 
	} 
	
	for(i = 0; i < n; i++) 
	{
		if(a[i] != 0) 
		printf("spare: %d\n", a[i]); 
	}
	return 0;
}



数据结构约瑟夫环课程设计报告 功能:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。如此下去,直到所有人全部出列为止。令n最大值取30。要求设计一个程序模拟此过程,求出出列编号序列。 立即下载

相关推荐

如何用Python实现SPEI指数计算?从数据准备到结果可视化完整指南

本文提供了一份完整的Python实现SPEI指数计算指南,涵盖从数据准备、潜在蒸散量计算到结果可视化的全流程。详细介绍了使用Thornthwaite方法计算PET、拟合三参数log-logistic分布以及标准化转换的核心算法,并提供了模块化代码和可视化方案,帮助用户构建可复用的干旱分析工具。

cola5的博客 269

Task--34 报数游戏

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

weixin_68175518的博客 475

LCD驱动芯片——BL55072A驱动程序

初始化子程序: START 0x7C; I2C子地址 0xEA;ICSET,软件复位芯片 0xC0;MODSET,关显示 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8;ICSET,清复位bit1 STOP 显示刷新子程序: START 0x7C;I2C子地址 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8或0xEC;ICSE

love421的博客 3176

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

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

wfy17030212的博客 6万+

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1676

Qwen大模型参数解析

Qwen系列模型的参数主要分为(决定模型结构)和(控制生成行为)两类。由于该系列已迭代多个版本,参数设计也在不断演进,我会结合最新版本为你进行分层梳理。

yeyiboy的博客 169

Python编程之围圈报数

问题描述:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': nmax = 50 n = int(raw_input('请输入总人数:')) num...

跑得动就不要歇着 3595

【异常】OpenClaw LLM Request Timeout 超时问题的快速定位与落地解决

摘要:OpenClaw系统在执行任务时频繁出现"LLM request timed out"异常。通过分析发现主模型自动调度导致响应延迟,且缺乏超时配置兜底。解决方案包括:1)将主模型切换为低延迟的豆包2.0 Lite;2)保留豆包2.0 Pro和Kimi作为备用;3)重启Gateway服务验证。优化后系统响应速度显著提升,未再出现超时异常。后续建议增加显式超时配置、优化任务拆分和Prompt指令,并建立网络监控机制。(148字)

奶爸的编程之路,也就一周冷个三天 1159

python基础练习--报数报到3的退出

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。         1 # -*- coding:utf-8 -*- 2 3 if __name__ =='__main__': 4 nmax=50 5 n = input('请输入总人数:') 6 num=[] ...

jerechen的博客 4762

大津法(OTSU)点云强度信息分割

大津法(OTSU)是一种灰度图像自适应的阈值分割方法,大津法根据图像的灰度分布,将图像分成背景和前景两部分,前景就是需要按照阈值分割出来的部分。由于点云的强度信息的特性,也可以利用此方法进行分类,但需要保证信息干扰较少,例如道路标线分割等场景较为适用。

qq_48694523的博客 966

VIVADO IP核之FIR插值器多相滤波仿真

网络上有许多文章介绍FIR低通滤波器的使用,包括仿真。关于FIR低通滤波器的使用,我之前的文章已经介绍过了,本文将继续深入介绍FIR插值器多相滤波的使用方法,并将FIR插值多相滤波的结果与MATLAB仿真计算的结果比较,验证了FIR插值器多相滤波使用正确。

m0_66360845的博客 3383

php 逻辑训练小题目三(附我的答案)

【程序31】 题目:将一个数组逆序输出。  1.程序分析:用第一个与最后一个交换。  <?php $arr=array("张氏","男",28,"本科"); $arr2=$arr; for($i=0,$len=count($arr);$i<$len;$i++){ $arr[$i]=$arr2[$len-1-$i]; } var_dump($arr); ?> 【程序32】  题目:

lifushan123的专栏 1844

使用再生龙备份还原liunx系统(精确每一步)

再生龙镜像可自行到官网下载(ISO/ZIP格式均可),然后使用tuxboot烧录工具制作启动盘,另外准备一个U盘用来存储备份的镜像文件,即再生龙盘和存储盘是两个分开的。当然也可以用分区工具把同一个硬盘分区来使用,比较方便,先学会基本的吧,只是告诉有个捷径,省个U盘。

米可的博客! 8377

算法面试题

常考的算法题目

ximen250的专栏 156

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

华为机试题2014年9月17日上下午节选

上午第一题:要求递归实现计算整数的各个位置之和

又见炊烟 1088

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

报数(约瑟夫环问题)

C时间限制:1 毫秒 |  C内存限制:3000 Kb 题目内容:  有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的 人退出圈子,问最后留下的是原来第几号的那位? 输入描述 正整数n 输出描述 直接输出结果 输入样例 10 输出样例 4 要想用到递归法就必须找到f(n)和f(n-1)之间的关系,那么约瑟夫环

hushhw的博客 2588

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

解题关键点: 1.如何实现围成一圈–循环计数 == > 当循环到末尾的时候,重新置为1 2.如何控制循环结束 ==>用人数控制循环结束时机,只剩一个人的时候,退出循环 #include<stdio.h> int main() { int a[1000],n,i,t,cnt=0; scanf("%d",&n); t=n; //用人数控制循环结束时机 ...

Rudy的博客 1万+

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

拼接好的数组继续执行上述操作,直到数组长度为3,也就是递归到出口。递归出口:当2人或者3人报数时,结果是固定的,都是2号位留下。将截取的人拼到数组的最前面 ,记得数组末尾要删除他们。截取末尾不够数到3的人,他们将是下次报数的开始。过滤标记的人,也就是把报3的删除。

qq_35810154的博客 1545

有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万+

python数圈算法_Python实践|围圈数数多人运动

题目有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。def main():n = int(input("输入人数:"))List = []for i in range(1, 【1】):List.append(i)s = 0while 1:t = 0for i in range(1, 【2】):s= 【3】if s % 3 == ...

weixin_39680380的博客 914

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

回来网上查资料发现,答案要不不对,要不太繁琐不易懂。面试的时候碰到了这道题,当时不会做。最后还是自己研究出来写法,蛮开心的。代码都做了注释,便于大家理解。提供给大家做一个参考。

TravelMoons的博客 1933

有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?

有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? n=int(input(“请输入总人数(从一个报数开始以1编号,逐次递增):”)) a=list(range(1,n+1)) while len(a)&amp;amp;amp;gt;2: c = len(a) % 3 b = [] if c == 0: for i in range(1, len(a...

weixin_43174556的博客 4403

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

代码如下: package tests; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 题目描述, *Java 写有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数), *凡报到3的人退出圈子,问最后留下的人原来排在第几号。 *

ZHAOXING_ME的博客 3208

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

#include int main() { int i,n,m=0,k=0,a[1000]; printf("请输入人数\n"); scanf("%d",&n); for(i=0;i<n;i++) { a[i]=i+1;//将每个人都放入数组之中 } while(m<n-1) { for(i=0;i<n;i++) { if(a[i]!=0)

x_unknown的博客 842

数到三的人退出(链表实现)

链表的实现昨天复习了这一周比较生疏的习题。而最后一个习题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。 昨天通过数组完成,今天自己想通过循环单链表完成此习题。逻辑上这样比较简单。只需要每次计数到3的倍数就将该节点删除。 #include <stdio.h> #include <stdlib.h> #define LEN 5class

q8821773的博客 670

c语言 报数问题

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

qq_45234177的博客 7561
上一篇: 强化练习3:判断闰年
下一篇: 强化练习5:找合法帧
_羊子_
博客等级 码龄10年 14粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值