返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++约瑟夫环问题详解
  • 724
分享到

C++约瑟夫环问题详解

2024-04-02 19:04:59 724人浏览 薄情痞子
摘要

题目如下: 有一家公司,这个公司有一位老板和13名程序员,每天下班前老板都会组织他们玩一次游戏,游戏的胜利者可以不加班,失败者需要加班2小时。游戏规则如下: 一张圆桌共有13个座位,

题目如下:

有一家公司,这个公司有一位老板和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<stdio.h>
#include<malloc.h>
 
//创建结构体 
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;
	}
	
	 
	 
	 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++约瑟夫环内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++约瑟夫环问题详解

本文链接: https://www.lsjlt.com/news/162137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++约瑟夫环问题详解
    题目如下: 有一家公司,这个公司有一位老板和13名程序员,每天下班前老板都会组织他们玩一次游戏,游戏的胜利者可以不加班,失败者需要加班2小时。游戏规则如下: 一张圆桌共有13个座位,...
    99+
    2024-04-02
  • C++ 约瑟夫环问题案例详解
    在牛客网上做到一道题,是约瑟夫环的变型,所以借此学习一下新知识,并且巩固一下对题目意思的理解,这一篇仅作约瑟夫环问题的解释,下一篇再写题目: ##1.首先,我们先来了解一下什么是约瑟...
    99+
    2024-04-02
  • C++约瑟夫环问题怎么实现
    本文小编为大家详细介绍“C++约瑟夫环问题怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++约瑟夫环问题怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题目如下:有一家公司,这个公司有一位老板和...
    99+
    2023-06-26
  • 约瑟夫斯问题
    弗拉维奥·约瑟夫斯(Josephus problem)是一世纪著名历史学家,他和他39个战友被罗马军队包围在洞中。他们宁愿死在洞中也不想成为罗马人得俘虏,于是他们围成了一个圈,其中一个人被指定为第一个人,顺时针报数到第七个人,这个人就会被...
    99+
    2023-01-31
    约瑟夫
  • PHP怎么解决约瑟夫环问题
    这篇文章主要讲解了“PHP怎么解决约瑟夫环问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么解决约瑟夫环问题”吧!约瑟夫环问题(猴子选大王)PHP版约瑟夫斯问题问题有时候也被描述成...
    99+
    2023-06-22
  • C/C++经典算法之约瑟夫问题详解
    目录什么是约瑟夫问题? 方法一:数组方法二:环形链表方法三:递归总结什么是约瑟夫问题?  约瑟夫问题:n个人围成一圈,初始编号从1~n排列,从约定编号为x的人开始...
    99+
    2024-04-02
  • 详解基于C++实现约瑟夫环问题的三种解法
    目录一、前言二、循环链表模拟三、有序集合模拟四、递归公式解决五、结语一、前言 什么是约瑟夫环问题? 约瑟夫环问题在不同平台被"优化"描述的不一样,例如在牛客剑指offer叫孩子们的游...
    99+
    2024-04-02
  • 【链表问题】环形单链表约瑟夫问题
    前言以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获。每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢【题目描述】【要求】输入:一个环形单向链表的头节点 head 和报数 m.返回:最后...
    99+
    2023-06-02
  • Python实现约瑟夫环问题的方法
    本文实例讲述了Python实现约瑟夫环问题的方法。分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一...
    99+
    2022-06-04
    约瑟夫 方法 Python
  • 约瑟夫环 python 实现
    面试的过程中遇到了这个问题。就是经典的约瑟夫环。总共有41个人,排成一排,数到3的人自杀,问最后剩下的是那两个号码? 这个题目最早是用指针实现的。在我面试python的过程中遇到了,我嫌麻烦,所以只写了伪代码。后来想来一下,这样实在是表现...
    99+
    2023-01-31
    约瑟夫 python
  • C语言数据结构中约瑟夫环问题探究
    目录问题描述基本要求测试数据实现思路1实现思路2结果数据结构开讲啦!!! 本专栏包括: 抽象数据类型线性表及其应用栈和队列及其应用串及其应用数组和广义表树、图及其应用存储管理、查找和...
    99+
    2023-01-12
    C语言约瑟夫环 C语言约瑟夫环问题
  • C语言数据结构中约瑟夫环问题如何解决
    本文小编为大家详细介绍“C语言数据结构中约瑟夫环问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言数据结构中约瑟夫环问题如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题描述约瑟夫环问题的...
    99+
    2023-07-04
  • C语言版约瑟夫问题算法实现
    1、问题描述:        有n个人围坐一圈,现从第s个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人又出列.如此下去,直到所有人都出列为止.试设计确定他...
    99+
    2024-04-02
  • JavaScript三种方法解决约瑟夫环问题的方法
    目录概述问题描述循环链表有序数组数学递归总结概述 约瑟夫环问题又称约瑟夫问题或丢手绢问题,是一道经典的算法问题。问题描述也有很多变式,但大体的解题思路是相同的。本篇将以循环链表、有序...
    99+
    2024-04-02
  • 约瑟夫环的解法有哪些
    这篇文章主要介绍“约瑟夫环的解法有哪些”,在日常操作中,相信很多人在约瑟夫环的解法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”约瑟夫环的解法有哪些”的疑惑有所帮助!接...
    99+
    2024-04-02
  • Java用单向环形链表来解决约瑟夫环Josepfu问题
    简单介绍 如果把单链表的最后一个节点的指针指向链表头部,而不是指向NULL,那么就构成了一个单向循环链表,通俗讲就是让尾节点指向头结点。 单向环形链表应用场景:Josephu(约瑟...
    99+
    2024-04-02
  • C++实现约瑟夫环的循环单链表
    约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。. 从编号为 k 的人开始报数,数到 m 的那个人出圈;他的下一个人...
    99+
    2024-04-02
  • 如何实现C语言版约瑟夫问题算法
    这篇文章主要为大家展示了“如何实现C语言版约瑟夫问题算法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现C语言版约瑟夫问题算法”这篇文章吧。1、问题描述:    &nb...
    99+
    2023-06-22
  • C语言如何实现一个约瑟夫环
    本篇内容主要讲解“C语言如何实现一个约瑟夫环”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现一个约瑟夫环”吧!C语言约瑟夫环的实现一、典故:   &nb...
    99+
    2023-06-17
  • 如何使用批处理解约瑟夫环应用题
    小编给大家分享一下如何使用批处理解约瑟夫环应用题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目:   有二十九个女生(分别用1-29号来称呼)围成一圈玩报数游...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作