C语言用数组解决约瑟夫环问题 问题说明: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,大家决定宁愿自杀也不要被敌人抓到,于是确定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他...
本节主要讲解如何用数组的方式解决约瑟夫环的问题。 程序如下所述: #include<stdio.h>#defineLEN 41voidmain(){inta[LEN];for(inti=0;i<LEN;i++){a[i] =1;}//数组初始化,1:表示为活着;0:表示自杀intleftCount = LEN;//计数器leftCount:计数剩下的人intindex =0,count =0;//1.数组下标index;2....
C语言用数组解决约瑟夫环问题 问题说明: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,大家决定宁愿自杀也不要被敌人抓到,于是确定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他...
首先让我们来看一下问题地描述 n个人围成一圈,从第s个人开始报数,报到m的人出列,从下一个人再重新报数,报到m的人出列,如此下去,直至所有人都出列。试编写算法,输出出列人的编号。 简单来说,就是数组的删除问题,但这个删除又按一定的规律来进行的,并非是随意的,所以说,找到这个规律非常关键! 我们假设有9个...
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...
C#数组解决约瑟夫环问题 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace约瑟夫环 {classProgram {staticint[] Jose(inttotal,intstart,intalter) {intj, k =0;int[] intCounts =newint[total +1];int[] intPers =newint[total +1];for(inti =0; i < total; i...
用C++容器模板解决——约瑟夫问题 #include <iostream> #include <vector> #include <iterator> #include<typeinfo> #include<list> #include<deque> using namespace std; // n个骑士, 报到 m 的骑士出列 template<class T> void joseph(T collection, int n, int m){...
问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始):k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-...
C语言用数组解决约瑟夫环问题 问题说明: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,大家决定宁愿自杀也不要被敌人抓到,于是确定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他...
10. (待补)用数组解决约瑟夫循环问题。 约瑟夫环问题的具体描述是:设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人...