C++约瑟夫环问题怎么实现
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题
千家信息网最后更新 2024年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安全错误
数据库的锁怎样保障安全
济南服务器机柜报价
东莞松下软件开发公司
普陀区数据软件开发销售方法
熊腰肉 60数据库
计算机网络技术标语
深圳物流系统软件开发
文件关系数据库性能对比
rtsp服务器随机播放
网络安全可以做什么产品
宁夏网络安全宣传信息
软件开发最晚转行年龄
三级考网络技术二级考什么
ug软件开发合同应注意事项
如何玩别人的我的世界服务器
统战部署网络安全
淘宝网的服务器认证书
关于网络安全发言稿300字
越南网络安全法指导决议
免费备案服务器
上海驭卫互联网科技
pm 软件开发
确保网络安全可控
数据库的恢复技术可用和完成
zdh服务器
数据库错误00922
是数据库应用的核心
1.9梦世界服务器
未来无线通信网络技术研讨会
vfp数据库基础知识练习题
收费英文全文数据库