C++约瑟夫环问题怎么实现
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本文小编为大家详细介绍"C++约瑟夫环问题怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"C++约瑟夫环问题怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
浪潮服务器调试口
数据库 驱动层
网络安全法 服务器
服务器默认管理地址是什么
进出口贸易管理软件开发设计
使用某一数据库系统可以实现
大数据项目服务器资源
湖北省运动员科学选材数据库系统
服务器管理是指什么
监控流媒体服务器部署在哪里
e会学网课数据库答案
同时我希望能够提高网络安全
数据库成员身份
上海信息网络技术口碑推荐
吉林省国家网络安全法
华为软件开发工程师考察范围
全国企业网络安全解决方案
参照完整性保证数据库中实体
云服务对网络安全要求
天域互联网科技中心在哪里
网络安全责任制落实不力
无效网络技术包括
5g低时延依靠哪些网络技术
网络安全好做吗
电脑如何进入网络安全模式
芒果互联网科技qq号多少
网络安全法的意包括
网络安全国际合作开题报告
linux服务器绑定安全狗
潜渊症怎么看服务器ip