首先,将 1~n 的数依次加入数组中。使用 count 记录当前报数的次数,使用 out 记录已经出队的人数,使用 f 记录是否是第一个出队的人,方便输出空格。 使用一个 while 循环,直到队列为空为止。在循环中,使用 for 循环遍历数组,对于已经出队的人,跳过。对于未出队的人,当报数次数 count 等于 m-1 时,输出其对...
求解约瑟夫问题:设有n个人站成一个圈,其编号为1——n,从编号为1的人开始顺时针“1,2,3...”循环报数,数到m的人出列,然后从出列者的下一个重新开始报数,数到m 的人又出列,如此重复进行下去,直到n个人都出列为止。要求输出这n个人的出列顺序。 算法思路:采用一维数组p[],先将n个人的编号存入p[0]—...
python 数组实现约瑟夫环 现在有13个人围成一个环,从1开始报数,数到3的人离开,写出程序计算最后剩下的是谁。 使用while循环 def josephus1(num, k, m): """ 约瑟夫环(约瑟夫问题)是一个数学的应用问题: 已知num个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那...
分别使用结构体和数组实现约瑟夫环(围圈报数问题之二) 前天用单循环链表实现了约瑟夫环问题,这种方法执行效率高。接下来用另外两种简单的方法实现之。 方法一:使用数组 voidmain() {inta[81],n,i,counter,num; //counter用来计算,num用来记录退出的人数 printf("please input total the number of person:"); s...
C语言用数组解决约瑟夫环问题 问题说明: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,大家决定宁愿自杀也不要被敌人抓到,于是确定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他...
1 #include<stdio.h>#include<stdlib.h>void main(){int y(int n,int m);int p,q,r;printf("请输入参选人的个数p和开始的位置q:\n");scanf("%d%d",&p,&q);r=y(p,q);printf("最后那个人的初始位置是:%d\n",r);}int y(int n,int m){int i,j=0,s=0,l;int *a=(int *)...
private int findLastPerson(int personAmount,int aimNum){ //n个人围成一圈 int[] personLoopArr = new int[personAmount]; //当前的报数 int currentNum = 0; //当前出局的人数 int outPersonAmount = 0; //我们需要找到的目标人的位置 int aimPersonIndex = 0; ...
什么是约瑟夫环问题呢? 首先让我们来看一下问题地描述 n个人围成一圈,从第s个人开始报数,报到m的人出列,从下一个人再重新报数,报到m的人出列,如此下去,直至所有人都出列。试编写算法,输出出列人的编号。 简单来说,就是数组的删除问题,但这个删除又按一定的规律来进行的,并非是随意的,所以说,找到这个规律...
约瑟夫问题:C++数组 今天,我要和你们聊一个特别有趣的东西,叫做“C++数组”!它就像是一把魔法盒子,可以装许多许多的东西,比如糖果、积木,甚至是你们的小朋友名字!就像你们在家里有一堆玩具一样,C++数组也是可以装很多东西的超级有用的玩具盒子哦! 现在我们要用一个超级有趣的游戏来玩玩看!这个游戏叫做“约瑟夫...
问题:一圈人围成一圈,从1开始数,当数到3的人就退出,下一个继续从1数 主要程序: #include using namespace std; int main(){ i...