C++约瑟夫环问题怎么实现
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题
千家信息网最后更新 2025年11月11日C++约瑟夫环问题怎么实现
本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
题目如下:
有一家公司,这个公司有一位老板和13名程序员,每天下班前老板都会组织他们玩一次游戏,游戏的胜利者可以不加班,失败者需要加班2小时。游戏规则如下: 一张圆桌共有13个座位,从1到13编号,游戏开始前老板会说出今天开始报数的座位编号start和淘汰序号k。 然后13名程序员开始抢位置,每个位置只能容纳一程序员,每个程序员必须选择一个座位。 座位号为start的程序员从1开始报数,按如图所示方向依次报数。每次报数为k的程序员淘汰并离开座位去加班,其他人继续游戏,直到剩下最后一人潇洒离去。
有一位非常聪明的程序员,每次在老板说出start和k的瞬间,就能立即选好座位并且获胜,所以他从来没有加过班,其他程序员都非常羡慕他,问他制胜法宝,只见他缓缓的打开了一个名为IAMGOD的.c文件,大家都露出崇拜的目光。
今天,你就是这个聪明的程序员,请完善IAMGOD.c文件内容。
根据提示,在右侧编辑器完善IAMGOD.c文件内容,找到可以不加班的座位号。
输入:start k
输出:所选的座位编号i
示例1-输入:2 3
输出:13
#include#include //创建结构体 typedef struct Node{ int data; struct Node* next;} NODE; //创建新结点和插入结点 void insert(NODE* head){ int i; NODE* tail = head; //对每一个结点进行编号,依次编号为1、2、3......13 for(i = 2; i <= 13; i++) { NODE* newnode; newnode = (NODE*)malloc(sizeof(NODE)); newnode->data = i; //尾插法连接链表 newnode->next = NULL; tail->next = newnode; tail = newnode; } /* 这段语句用来打印链表,检测链表是否正确连接的 NODE* pmove = head; while(pmove != NULL) { printf("%d->",pmove->data); pmove = pmove->next; } */ tail->next = head; //将尾结点连接到头结点上,形成一个环 } void serch(NODE* head){ int start_data,i,k; NODE* start = head; scanf("%d%d", &start_data, &k); //移动到第start_data结点,并将此结点当成1号结点 for(i = 2; i <= start_data; i++) { start = start -> next; } NODE* front; //front表示第k个结点的前一个结点 while(start->next != NULL) { int j; for(j = 2; j <= k; j++) { front = start; //先让front移动到当前结点,然后当前结点往下移动,就形成一前一后的效果 start = start->next; //移动结点 } front->next = start->next; //将第k个结点的上一个结点连接到它的下一个结点上 free(start);//删除指定结点 start = front->next;//更新start的位置,也就是1号 //当第k个仍是本身,即只剩下了一个结点,跳出循环 if(start->data == (start->next)->data) break; } printf("%d",start->data);} int main(){ //创建链表 NODE* head; head = (NODE*)malloc(sizeof(NODE)); head->data = 1; head->next = NULL; //创建新结点和连接结点 insert(head); //查找第k个结点并且将其删除。 serch(head); return 0;}
读到这里,这篇"C++约瑟夫环问题怎么实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
结点
程序
程序员
座位
内容
老板
问题
约瑟
约瑟夫
C++
位置
文件
文章
聪明
公司
座位号
移动
输入
输出
妥当
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
dsm 数据库打不开
网络安全幼儿园儿歌
java数据库事务机制
常熟数据网络技术怎么样
梦幻西游星海湾服务器怎么样
完整的数据库文件还原数据库
长岛安卓软件开发公司有哪些
广州华戴网络技术
性别数据库怎么建立
新一代网络技术分类价目表
转移定价文档的可比数据库
上海网络技术价格查询
公寓的共用网络安全吗
华为服务器下电前的准备操作
cubase是关系数据库吗
全年网络安全无事故总结
学校如何加强网络安全教育
网络安全有字图画
魔兽世界怀旧服务器怎么回事
php与数据库结合例子
广东2018网络安全宣传周
数据库中时间格式化
广州百年树网络技术公司
苹果服务器安全
2020年银行网络安全周
qt ftp 服务器
网络技术与交换技术
不安全的前沿服务器阵列怎么打
国产数据库连接方式
联想塔式服务器 st550配置