C++约瑟夫环问题怎么实现
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题
千家信息网最后更新 2024年09月21日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安全错误
数据库的锁怎样保障安全
天朗数据库
美国遭遇的网络安全事件
郑州高新区网络安全科技馆通讯
应对网络安全下一步打算
为啥网络连接不上服务器
山东网络安全论坛
阿里云服务器安全盾关闭
计算机网络技术应用考试试题
向量数据库的未来
服务器游戏主机配置
nicelabel数据库
网络安全对国防安全的重要性
网络安全法安全责任分配
服务器端口映射软件
贵阳专业软件开发团队
河北开源软件开发制作
临汾市网络安全事件应急预案
医疗器械进出口数据库
网络技术美术教学的弊端
网络安全实现dns劫持
强化网络安全 国税
计算机网络技术要求多高学历
关于网络安全的手绘图片
向量数据库的未来
军营网络安全宣传图
计算机三级网络技术b站
维普数据库只能检索中文期刊
ps3 媒介服务器
软件开发什么大学
php与数据库结合例子