约瑟夫环-循环队列算法(曾微软,google笔试题)

时间:2021-01-16 00:29:52

约瑟夫环-循环队列算法(曾微软,google笔试题)

这也是我们聚会时常常做的游戏之一。

算法思路:

  此处我使用循环链表模拟人围城一圈,每一个结点代表一个人。链表是一个有序链表,链表结点数据域是一个整型,代表人的序号。出局等同于链表删除元素,每次出局后重新从1k开始数。知道剩下最后一个。最后一个的判定是:while((p->num)!=(p->next->num))。循环跳出,就是到最后一个人。

算法代码如下:

 #include <stdio.h>
#include <stdlib.h>
#define NUM 5 //游戏人数
#define OUT 3 // 逢3出局
struct Person
{
int num;
struct Person *next;
};
int main()
{ int i,j;
int cnt=;
int index=;
int c[NUM]={};
struct Person person[NUM],*p;
printf("\n游戏人数是 %d 人\n逢 %d 出局\n\n",NUM,OUT);
for(i=;i<NUM;i++)
{
person[i].num=i+;
person[i].next=&person[(i+)%NUM];
}
p=&person[];
while((p->num)!=(p->next->num))
{
while(cnt<OUT-)
{
p=p->next;
cnt++;
}
c[index]=p->next->num;
index++;
p->next=p->next->next;
p=p->next;
cnt=;
}
c[index]=p->num;
printf("最后一个人是:%d\n\n",p->num);
printf("出局的顺序是:\n");
for(j=;j<NUM;j++)
{
printf("-->%d",c[j]);
}
printf("\n\n");
system("pause");
return ;
}

实验截图:

约瑟夫环-循环队列算法(曾微软,google笔试题)约瑟夫环-循环队列算法(曾微软,google笔试题)约瑟夫环-循环队列算法(曾微软,google笔试题)约瑟夫环-循环队列算法(曾微软,google笔试题)

约瑟夫环-循环队列算法(曾微软,google笔试题)的更多相关文章

  1. &lbrack;py&rsqb;约瑟夫问题-循环队列

    约瑟夫问题(历史战争问题) 直观理解 老外视频讲解 模拟器演示 约瑟夫问题 数学姥公众号 讲的最清楚 背景及,推倒过程讲解得很清晰,旨在提高人们对数据的兴趣 简单说下: 几个人围成一圈(循环队列), ...

  2. &lbrack;算法&rsqb;美团春招笔试题C-求有趣子序列数&lpar;DP&rpar;

    题目 输入n,以及长度为n的数组元素 输出数组的非空子序列中有多少个"有趣序列"mod 998244353,有趣序列指所有元素满足arr[i]%i == 0, i从0记. 例: 输 ...

  3. google浙大招聘笔试题 师兄只能帮你到这儿了

    google浙大招聘笔试题 一.单选1.80x86中,十进制数-3用16位二进制数表示为?00100002.假定符号-.*.$分别代表减法.乘法和指数运算,且 1)三个运算符优先级顺序是:-最高,*其 ...

  4. 小小c&num;算法题 - 12 - Joseph Circle(约瑟夫环)

    约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数(从1开始报数),数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又 ...

  5. Javascript数据结构与算法--队列&lpar;顺序队列、优先队列、循环队列&rpar;的实现与用法

    前言 队列和栈非常类似,前面已经讲过了栈的实现与用法,现在我们来说说队列. 队列介绍 队列遵循FIFO(First In First Out,先进先出)原则的一组有序的项. 队列是一种特殊的线性表,特 ...

  6. 循环列表的Java实现,解决约瑟夫环问题

    import java.util.Scanner; /** * 循环列表的Java实现,解决约瑟夫环问题 * * @author LIU * */ public class LinkedList { ...

  7. 《Java数据结构与算法》笔记-CH4-5不带计数字段的循环队列

    第四章涉及三种数据存储类型:栈,队列,优先级队列 1.概括:他们比数组和其他数据存储结构更为抽象,主要通过接口对栈,队列和优先级队列进行定义.这些 接口表明通过他们可以完成的操作,而他们的主要实现机制 ...

  8. 简单约瑟夫环的循环单链表实现&lpar;C&plus;&plus;&rpar;

    刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...

  9. C&num; 约瑟夫环算法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

随机推荐

  1. update the UI property cross thread

    this.Invoke((MethodInvoker)delegate { txtResult.Text = sbd.ToString(); // runs on UI thread });

  2. 树形打印lua table表

    为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...

  3. ApexSQL Log-SQL误操作恢复工具

    今天不小心对数据库执行了一次误操作,心想有没有什么工具能恢复这次误操作呢?于是找到了Log Explorer 4.2,可惜它最多只支持SQL 2005,在SQL 2008上无法使用,然后又找到了Ape ...

  4. Sublime text追踪函数插件:ctags

    转自:http://blog.csdn.net/xxhsu/article/details/30766675 一.下载: 1)http://ctags.sourceforge.net/ 2)http: ...

  5. Json的序列化和反序列化

    1.利用js进行序列化成字符串和反序列化 var personObj = {name:"Tom",age:16}; // 利用JS序列化成字符串 var personStr = J ...

  6. 合肥三洋股份,惠而浦家电携四大品牌-Take ,所有的市场

        大家都知道,数家电企业的日子并不好过.一方面,产品同质化竞争越发激烈.家电市场已进入了恶性价格战时代.还有一方面,消费者对家电产品的需求越发多元化.个性化.这意味着无法满足消费者需求的产品非常 ...

  7. Go语言生成随机数

    在Go语言中生成随机数需要使用Seed(value)函数来提供伪随机数生成种子,一般情况下都会使用当前时间的纳秒数字,如果不在生成随机数之前调用该函数,那么每次生成的随机数都是一样的. 函数rand. ...

  8. jeecg-org&period;jeecgframework&period;web&period;system&period;listener&period;InitListener

    早上启动项目 发现报错 百度之后,发现这属于jeecg常见问题: http://www.jeecg.org/forum.php?mod=viewthread&tid=1830&extr ...

  9. 公钥,密钥,HTTPS详解

    公钥与私钥,HTTPS详解 1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后 ...

  10. python-淘宝信息定向爬取

    S是类似产品页数  bcoffset直流偏移. 有人在将偏移量:http://www.cnblogs.com/defineconst/p/6185396.html item.taobao.com/it ...