python 数组实现约瑟夫环 现在有13个人围成一个环,从1开始报数,数到3的人离开,写出程序计算最后剩下的是谁。 使用while循环 def josephus1(num, k, m): """ 约瑟夫环(约瑟夫问题)是一个数学的应用问题: 已知num个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那...
当前要删除的结点:2当前的约瑟夫环为:3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19; 当前要删除的结点:5当前的约瑟夫环为:6;7;8;9;10;11;12;13;14;15;16;17;18;19; 当前要删除的结点:8当前的约瑟夫环为:9;10;11;12;13;14;15;16;17;18;19; 当前要删除的结点:11当前的约瑟夫环为...
分别使用结构体和数组实现约瑟夫环(围圈报数问题之二) 前天用单循环链表实现了约瑟夫环问题,这种方法执行效率高。接下来用另外两种简单的方法实现之。 方法一:使用数组 voidmain() {inta[81],n,i,counter,num; //counter用来计算,num用来记录退出的人数 printf("please input total the number of person:"); s...
int[] personLoopArr = new int[personAmount]; //当前的报数 int currentNum = 0; //当前出局的人数 int outPersonAmount = 0; //我们需要找到的目标人的位置 int aimPersonIndex = 0; while (outPersonAmount < personAmount){ for (int currentPersonIndex = 0; currentPersonIndex < personLoopArr.l...
C语言用数组解决约瑟夫环问题 问题说明: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,大家决定宁愿自杀也不要被敌人抓到,于是确定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他...
问题:一圈人围成一圈,从1开始数,当数到3的人就退出,下一个继续从1数 主要程序: #include using namespace std; int main(){ i...
首先用数组表达一个环,这就没有链表那么麻烦了,还是用四个人围着一个桌子在做淘汰游戏为例: 具体生成的伪代码比较简单: for(int i = 0; i < 数组长度; i++){ next_persons[i] = (i + 1) % 数组长度; //为什么要取模,因为最后一个元素得链到第一个元素达到环形的效果 ...
什么是约瑟夫环问题呢? 首先让我们来看一下问题地描述 n个人围成一圈,从第s个人开始报数,报到m的人出列,从下一个人再重新报数,报到m的人出列,如此下去,直至所有人都出列。试编写算法,输出出列人的编号。 简单来说,就是数组的删除问题,但这个删除又按一定的规律来进行的,并非是随意的,所以说,找到这个规律...
N个人围成一圈顺序编号,从1号开始按1、2、3…顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推,按退出顺序输出每个退出人的原序号。 #defineM 100// M > NvoidJoseph(intN,intp){intqueue[M];inthead,tail,i;for(i=1;i<=N;i++){queue[i]=i;}head=1;tai...
约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,...