C++约瑟夫环问题怎么实现
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
杰理蓝牙耳机软件开发工程师
360网络安全管理平台
浪潮服务器最高温度
做单片机软件开发怎么样
用友erp数据库金额单位
饥荒专用服务器怎么选
红色图标服务器管理器
数据库系统教程
司法局网络安全知识宣传简报
数据库测试数据生成器中文绿色版
拨号服务器vps
金蝶客户端找不到服务器怎么办
斗地主是什么软件开发的
上报金融数据库微信会封吗
火车头采集的数据库在哪里
建地理数据库不显示
小学生网络安全儿歌视频
哪个部门主管网络安全
硬盘不能连接到服务器
网络安全抄报内容
数世网络安全100强
服务器发现安全漏洞
西华县中医院网络安全招标
如何远程管理单位的服务器
网络安全设备上架前准备材料
所有表单刷新数据库
小白评测数据库打开应用速度
网络安全投资还有哪些
强化网络安全特色党日活动
超市连锁云服务器