约瑟夫抽杀问题公式

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

驹岭19841583515问: 我想问一下约瑟夫问题的递推公式为什么是 s = (s + m) % i;谢谢 -
佛冈县保和回答: 怎么理解呢?让我们来看一看 首先上题目,有n个人围成一圈,报数从1到m依次循环报数,报到m的就退出(死).现在我们来看递推,由于为了方便表示(s+m)%i=0的情况,我们让第一人的编号为0,(从一开始也可以).既然你问递推,...

驹岭19841583515问: 数学上的约瑟夫问题怎么解 -
佛冈县保和回答: 在M比较小的时候 ,可以用笔算的方法求解,M=2 即N个人围成一圈,1,2,1,2的报数,报到2就去死,直到只剩下一个人为止.当N=2^k的时候,第一个报数的人就是最后一个死的,对于任意的自然数N 都可以表示为N=2^k+t,其中t<n/2 于是当有...

驹岭19841583515问: 什么是约瑟夫环问题? -
佛冈县保和回答: 是一个数学的应用问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列. ...

驹岭19841583515问: 如何用Pascal 写 约瑟夫问题 求思想 -
佛冈县保和回答: 约瑟夫问题主要就是模拟报数的过程,告诉你一个比较容易懂的算法: 先定义一个f的布尔型数组,并把每个的值都赋值为TRUE.i和j用来数数字,k用来统计出圈人数.开始做,用一个repeat循环,i:=i+1,如果f-i为TRUE则j:=j+1,如果j等于m(...

驹岭19841583515问: C++ 约瑟夫问题: 求源代码 及 说明约瑟夫问题:M个人围成一圈,从第一个人开始报数,数到N的人出圈;再由下一个人开始报数,数到N的人出圈;…….... -
佛冈县保和回答:[答案] #include"stdio.h"int main(void){ int a[100] = {0}; int b[100] = {0}; int m = 0,n = 0; int i = 0,/...

驹岭19841583515问: 约瑟夫问题.一个递推公式求解释我没整出来.不过应该不难. -
佛冈县保和回答: #include<stdio.h>#include<string.h> int last(int num, int cnt) { char m, n, dat[100], p= 0, len= num; for(m= 0; m < num; m++) dat[m]= m; dat[m]= 0; for(m= 0; m < num-1; m++) { for(n= 0; n< cnt; n++) { p++; if(p > len) p= 1; } printf("p=%d", p); strcpy(&...

驹岭19841583515问: C++编程:带注释的那种!!初学者!!! 约瑟夫问题!!!!! -
佛冈县保和回答: /* 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉.例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1.分析:(1)由于对于每个人只有死和活两种状态,因此可以用布朗型数...

驹岭19841583515问: C语言编程:约瑟夫问题 -
佛冈县保和回答: #include "stdio.h" main() { int i,k,quit_num,a[30],*p; p=a; for(i=0;i*(p+i)=i+1; printf("the position of feijiaotu are:\n"); quit_num=0; k=0; i=0; while(quit_num{if(*(p+i)!=0)k++; if(k==9) {printf("%5d",*(p+i)); quit_num++; *(p+i)=0; k=0; } i++; if(i==30)i...

驹岭19841583515问: 约瑟夫问题(PASCAL)
佛冈县保和回答: var monkey:array[1..20] of integer; i,j,k,n,m,x:integer; begin readln(n); m:=2; k:=n; for i:=1 to 20 do monkey[i]:=i; i:=1; repeat x:=0; for j:=1 to (m div 2) do if m mod j:=0 then x:=1; if x=1 then begin i:=i+m-1; for j:=i+1 to n do monkey[j-1]:=monkey[j]; n:=n-1; end; m:=m+1; until k=1; 然后你自己把输出做一下;

驹岭19841583515问: 谁帮我解释一下约瑟夫问题,谢谢,程序如下 -
佛冈县保和回答: 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的.我们注意到原问题仅仅是要求出...


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