当前位置: 首页 > news >正文

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; }
http://www.cnnetsun.cn/news/97467.html

相关文章:

  • 算法 C语言 冒泡排序
  • 基于微信小程序的校园工会体育报名系统计算机毕业设计(源码+lw+部署文档+讲解等)
  • AppleRa1n:iOS激活锁绕过的终极解决方案指南
  • RTL8852BE驱动:Linux无线网络兼容性问题的完整解决方案指南
  • 如何彻底解决Windows 11安装蓝屏:MediaCreationTool.bat驱动兼容性完全指南
  • 最新软件测试面试题,常见面试题及答案汇总,不怕拿不到offer
  • Obsidian样式定制完全指南:从入门到精通的主题个性化技巧
  • LobeChat私域流量转化文案
  • Leakcanary检测内存泄漏汇总
  • LobeChat主持人串场词生成
  • 解锁全球付费内容:Bypass Paywalls Clean完全指南
  • 14、Linux 文件搜索:grep 与 find 命令全解析
  • 18、Linux系统:磁盘使用查询与软件安装管理指南
  • WebPlotDigitizer图表数据提取:3步实现科研图像到精准数据的完整指南
  • 【毕业设计】SpringBoot+Vue+MySQL 高校宣讲会管理系统平台源码+数据库+论文+部署文档
  • 如何彻底解决AutoCAD字体问题:终极字体管理插件使用指南
  • 3、量子世界的奥秘:从狄拉克到多世界诠释
  • 17、量子随机数、超密编码与量子隐形传态
  • 构建虚拟偶像配音系统?试试这款多情感TTS引擎EmotiVoice
  • LobeChat主题皮肤更换教程:打造个性化的AI聊天界面
  • 企业级工资信息管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 悼词缅怀亲人:LobeChat传递真挚情感
  • LobeChat PCI-DSS支付安全建议
  • Obsidian Style Settings:终极自定义指南,轻松打造个性化笔记界面
  • 解锁 AI 潜力:9 大核心提示技巧,让交互更精准高效
  • zotero-style终极指南:5分钟打造智能文献管理神器
  • BetterNCM安装工具:3分钟快速上手网易云音乐插件终极指南
  • 思科DHCP服务1
  • 解锁Ryzen处理器性能的5大核心调试技术
  • LobeChat限时促销活动文案生成