c语言约瑟夫问题数组

作者&投稿:凌杨 (若有异议请与网页底部的电邮联系)

约瑟夫问题的一般形式
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。分析:(1)由于对于每个人只有死和活两种状态,因此可以用布朗型数组标记每个人的状态,可用true表示死,false表示活。(2...

利用C++应该怎么解决“约瑟夫问题”?
1、解决这道题可以采用模拟报数的方法,建立一个大小为N的数组,数组的第N个元素表示第N个人是否还在队伍中,首先将每个元素都置为1,表示全员都在队伍中。如果第N个人出队,则将第N个元素置为0。2、模拟报数可以使用一个累加计数器,用它表示这轮报数已有多少人报数,然后循环访问每个人,若其在...

利用C++应该怎么解决“约瑟夫问题”?
1、解决这道题可以采用模拟报数的方法,建立一个大小为N的数组,数组的第N个元素表示第N个人是否还在队伍中,首先将每个元素都置为1,表示全员都在队伍中。如果第N个人出队,则将第N个元素置为0。2、模拟报数可以使用一个累加计数器,用它表示这轮报数已有多少人报数,然后循环访问每个人,若其在...

PTA例题精析-约瑟夫问题 Josephus Problem
这里使用数组暴力模拟的问题在于,已经被淘汰的猴子仍然会被循环到 链表方法很好理解,首尾相连成环,n个人中会淘汰n-1个人,所以外层循环是n-1,链表使用 curr = curr->Next 2次,那么,就找到了数3的人,把它从链表中删除,这次外层循环就走完了,剩下n-2个人。这里使用了单向链表,用一个 la...

数据结构中的约瑟夫环问题用C语言怎么编写出来啊?
1. 程序分析:这是一个比较经典的算法--约瑟夫环问题.2.个人分析: 算法比较经典,对于这样的问题本应该使用链表的形式会比较容易.约瑟夫环算法 则体现了使用数组来完成链表该完成的功能,虽然形式上完全不相同,但却求出了 相同的结果.有异曲同工之妙.总之我个人认为是数组中非常经典的算法了.希望本 ...

约瑟夫问题
将上面表格的每一行看成数组,这个公式描述的是:幸存者在这一轮的下标位置 问题1: 假设我们已经知道11个人时,胜利者的下标位置为6。那下一轮10个人时,胜利者的下标位置为多少? 答: 其实吧,第一轮删掉编号为3的人后,之后的人都往前面移动了3位,胜利这也往前移动了3位,所以他的下标位...

【pascal】求约瑟夫问题的递归求法(程序)
约瑟夫问题。M个人围成一圈,从第一个人开始报数,数到n的人出圈。再由下一个人开始报数,数到n的人出圈,……输出依次出圈人的编号。M值预先选定,n值由键盘输入。[解题分析]用一个数组存储M个人,先初始化数组,并使数组元素的值等于1,输入n的值。从1到M循环,判断该元素是否为数到n的元素,...

【生活处处皆算法】巧用约瑟夫环
约瑟夫环 (约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出圈;他的下一个人又从1开始报数,数到m的那个人又出圈;依次规律重复下去,直到剩余最后一个胜利者。例如:有10个人围成一圈进行此游戏,每个...

约瑟夫出圈问题用java代码,如何实现!急求解答
首先可以肯定的是我们需要用一个数组来存储这n个人,n是通过控制台输入获得的,用来确定数组的长度,数组的每个元素都给赋值,从第一个人开始报数,从1开始报,报到m的人出圈,(出圈的处理操作为:首先把这个数用一个临时变量存储起来,然后把这个数之后的数逐个往前移一位,移完后把出圈的这个 数存放...

用java在数组中实现约瑟夫环的问题, 要求写明详细注释, 方法最好简 ...
要求:请用面向对象的思想来处理这个问题并在下面写出具体的代码(可以选择你熟悉的语言,如java\/C++\/C#等)author Administrator \/ public class Ysfh { public static void main(String[] args) { m(3,16);} public static void m(int m,int n){ int c = 1;int[] ns = ntoarray(n);w...

一耍18461216660问: 约瑟夫问题 c语言数组 -
宝坻区博士回答: #include #define N 63 // 猴子数#define M 5 // 数数周期 void main() { // 编号 int arrId[N] = {0}; for (int i=0; i { arrId[i] = i+1; } int nCount = N; int nMod = 1; while (nCount > 1) { nMod = (nMod-1+M)%nCount; if (nMod == 0) nMod = nCount; coutfor (int...

一耍18461216660问: 约瑟夫环问题 用C语言数据结构数组实现.... -
宝坻区博士回答: #include<iostream> using namespace std; struct Node//循环节点的定义 { int number;//编号 Node *next; }; Node *CreateList(Node *L,int &n,int &m);//建立约瑟夫环函数 void Joseph(Node *L,int n,int m);//输出每次出列号数函数 Node *DeleteList...

一耍18461216660问: 约瑟夫环问题 用c语言数组的方法解决 -
宝坻区博士回答: #include#include int a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; void show_array(int *a, int n){ int i; printf("\nshowarray: "); for(i = 1; iprintf("%4d", a[i]); printf("\n"); } void cycle(int *arr, int k, int n, int len){ int count, i; int last_per = len; int last_pos = k;...

一耍18461216660问: c语言,如果用数组来解决约瑟夫环的问题 -
宝坻区博士回答: #include<stdio.h> int main() { int num[50],n,m,i,j; int len,start = 0,counter = 1; printf("总数 报数\n"); scanf("%d%d",&n,&m); if(n < 0 || n > 50 ) n = 50; if(m < 1 || m > n) m = n/2; printf("人数:%d,报数:%d\n",n,m); for(i = 0; i < n; ++i) ...

一耍18461216660问: C语言约瑟夫环的问题 -
宝坻区博士回答: #include<stdio.h> int main() {int i;int j=0;int k=0;int cnt1=1;//从1开始数int p[100];int a[100];for(i=1;i<=100;i++)p[i-1]=i;for(i=1;i<=100;i++)a[i-1]=0;for(i=1;i<=100;i++){if(cnt1<10 && p[i-1]>0)//这里我的想法看下面的解释1{cnt1++;} ...

一耍18461216660问: 只用数组怎么实现约瑟夫问题?C语言 -
宝坻区博士回答: int a[N]; 取 a[i] 改成取 a[i%N], 就可以当成圆的, 不怕 i 超界了.

一耍18461216660问: 求解用C语言数组实现约瑟夫环问题? -
宝坻区博士回答: 如果只需要结果的话可以把数到3的人置零,然后输出不是零的数就OK了 或者 可以先数学递推一下,比模拟效率高多了~~!! 具体的看我空间这直接给你代码吧 #include int main() { int n, m, i, s=0; printf ("N M = "); scanf("%d%d", &n, &m); for (i=2; i<=n; i++) s=(s+m)%i; printf ("The winner is %d\n", s+1); }

一耍18461216660问: 你好 请帮我回答一下这个问题 用数据结构知识怎样解决约瑟夫环问题? C语言 而且要用到数组方面的知识 -
宝坻区博士回答: #include <stdio.h>#define M 10/*总人数*/#define N 5#define START 0/*第一个报数的人*/ void main(void) { int a[M],i=0,k,count=0; while(i++<M)/*给每个人编号*/ a[i-1]=i; for(i=START;count<=M-1;count++) { for(k=1;k<=N;a[i++]&&++k)/*根据&&运...

一耍18461216660问: C语言解决"约瑟夫问题" -
宝坻区博士回答: #include<stdio.h> struct list//建立一个结构体,包括每个人的编号,密码和下一级的指针 { int id; struct list *next; }; list* input(int n)//链表的初始化 { list *p,*q,*l; int i,m; p=new list; l=new list; l->next=NULL; p=l; p->id=1;//第一个人的初始化 for(i=2;i<=n;...

一耍18461216660问: 我现在在学习C语言,遇到一些不会的题目想请教你们,想要一段约瑟夫问题的代码. -
宝坻区博士回答: #include<stdio.h>#include<stdlib.h> int main() { int a[1000]; int m; int n; int x=0; int count;//定义一个count,记录圆圈中剩余的猴子数 int i; scanf("%d",&m); scanf("%d",&n); count=m;//加这句 for(i=0;count>1;i++)//结束条件是猴子总数只剩...


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网