news 2026/4/17 23:36:41

C语言之约瑟夫问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言之约瑟夫问题

首先,编写一个程序,对m个人进行一次计数,即排成一行。如果达到出列要求,则重新计时。最后输出出列者的编号。

#include<stdio.h> int main() { int m,n,i,k; scanf("%d%d",&m,&n); int f[m];//该数组有m个元素,代表m个人的编号 for(i=0;i<m;i++){ f[i]=i+1;//存储每个人的编号 } k=0;//计数器清0 i=0;//从第一个人开始计数 while(i<m){//因为i的取值从0到m-1 k++;从第一个人开始数 if(k==n){//满足出列条件 printf("%-5d",f[i]);//输出出列者编号 k=0;//计数器复位,重新开始+1计数,再碰到符合出列数字的人出列。 } i++;//人的编号也要持续+1,且不用重置 } return 0; }

约瑟夫环是实现对m个人的循环计数,即数完第m个人后,重新回到第一个人继续计数,从而模拟m个人围成一圈的效果。

即实现约瑟夫环的关键是如何在计数完m个人后回到第1个人。即把i的条件变成i=(i+1)%m,能写出上述公式是因为要在i=m-2之前仍然是i++的效果,即余数为除数。但当i=m-1时,即最后一个人数完后,重新回到第1个人继续循环,即i变成0。但运行之后会发现,会无限循环,因为i的范围总是满足循环条件。所以要修改循环条件,最后剩余不足一个人时,即是循环结束的点。所以需要再定义一个变量是剩余人数。

同时,不要忘了把已经出列的人去掉。

#include<stdio.h> int main() { int m,n,i,k,c; scanf("%d%d",&m,&n); int f[m];//该数组有m个元素,代表m个人的编号 for(i=0;i<m;i++){ f[i]=i+1;//存储每个人的编号 } c=m; k=0;//计数器清0 i=0;//从第一个人开始计数 while(c>0){//因为i的取值从0到m-1 if(f[i]!=0){//再从下一个人开始计数时,就把已经出列的人排除即不数上。 k++; } if(k==n){ printf("%-5d",f[i]); f[i]=0;//出列的人序号清除 c--; k=0;//计数器复位,重新开始+1计数,再碰到符合出列数字的人出列。但这里唯一的问题是应该将已经出列的人排除再重新开始计数,即返回到第一个人。 } i=(i+1)%m; } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:53:24

LobeChat桌面端托盘图标提示

LobeChat桌面端托盘图标设计的工程实践与架构洞察 在如今这个信息过载、多任务并行的工作环境中&#xff0c;用户对效率工具的要求早已超越“功能齐全”——他们需要的是无感存在却随时可用的智能助手。当大语言模型&#xff08;LLM&#xff09;逐渐从实验室走向日常办公流&…

作者头像 李华
网站建设 2026/4/18 2:08:28

LobeChat Prompt模板库分享:提高对话质量的秘诀

LobeChat Prompt模板库深度解析&#xff1a;如何让大模型真正“听懂”你的话 在AI对话应用遍地开花的今天&#xff0c;打开一个聊天窗口已经不再稀奇。真正让人头疼的是——为什么同样的问题&#xff0c;别人问得条理清晰、答案精准&#xff0c;而你的提问却总被模型“误解”&a…

作者头像 李华
网站建设 2026/4/18 2:05:09

LobeChat灾备恢复进度通报

LobeChat 灾备恢复实践&#xff1a;从架构设计到快速重建 在 AI 应用日益深入业务核心的今天&#xff0c;一个看似简单的聊天界面背后&#xff0c;可能承载着企业客服、内部知识库甚至自动化决策的关键流程。一旦服务中断&#xff0c;不仅影响用户体验&#xff0c;更可能导致信…

作者头像 李华
网站建设 2026/4/17 20:05:42

PuzzleSolver:CTF MISC解题利器全面解析与实战指南

PuzzleSolver&#xff1a;CTF MISC解题利器全面解析与实战指南 【免费下载链接】PuzzleSolver 一款针对CTF竞赛MISC的工具~ 项目地址: https://gitcode.com/gh_mirrors/pu/PuzzleSolver 在CTF竞赛的MISC类别中&#xff0c;面对各种隐写术、文件格式混淆和数据恢复挑战&a…

作者头像 李华
网站建设 2026/4/17 23:32:51

LobeChat向上销售话术生成

LobeChat&#xff1a;如何用一个开源框架撬动AI产品的“向上销售”能力 你有没有遇到过这种情况&#xff1f;团队终于把大模型接入了系统&#xff0c;API也能稳定调用了&#xff0c;结果业务方试用后却说&#xff1a;“界面太简陋&#xff0c;员工根本不愿意用。” 或者更扎心的…

作者头像 李华
网站建设 2026/4/18 2:01:17

如何快速掌握diff-pdf:PDF文档对比的完整指南

如何快速掌握diff-pdf&#xff1a;PDF文档对比的完整指南 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf 在文档处理工作中&#xff0c;PDF对比是每个职场人士都会遇到的难题。d…

作者头像 李华