matlab编程:编号,报数,求留有20个小朋友,按1,2,3,...,20编号围坐一圈,从第一个人开始从1到5报数,报到5的退出(不在在围成的圈内),从下一个开始,继续从1开始循环报数,报到5的退出,如此重复,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 13:22:40

matlab编程:编号,报数,求留有20个小朋友,按1,2,3,...,20编号围坐一圈,从第一个人开始从1到5报数,报到5的退出(不在在围成的圈内),从下一个开始,继续从1开始循环报数,报到5的退出,如此重复,
matlab编程:编号,报数,求留
有20个小朋友,按1,2,3,...,20编号围坐一圈,从第一个人开始从1到5报数,报到5的退出(不在在围成的圈内),从下一个开始,继续从1开始循环报数,报到5的退出,如此重复,最后剩下的一个小朋友发给奖品,求最后一个小朋友的初始编号.
一定要用matlab啊,求大神指教

matlab编程:编号,报数,求留有20个小朋友,按1,2,3,...,20编号围坐一圈,从第一个人开始从1到5报数,报到5的退出(不在在围成的圈内),从下一个开始,继续从1开始循环报数,报到5的退出,如此重复,
代码是:
x = 0;
for i = 1:20
    x = mod(x+5, i);
end
disp(x+1);

% 将打印 7
如下转至【CSDN - cs_zlg的专栏】的博客:
问题提出:
n个人(编号1~n)围成一个圈,从1开始依次报数,报到m的出列,剩下的人继续从1开始报数(由刚出列的人的下一个人开始).求最后出列的人(胜利者)的编号.
为了讨论方便,先把问题稍微改变一下,并不影响原意:
问题描述: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-2,并且从k开始报0.
现在我们把他们的编号做一下转换:
k     --> 0
k+1 --> 1
k+2 --> 2
...
k-2 --> n-2
变换后就成为了(n-1)个人报数的子问题,假如这个子问题的x是胜利者,那么根据上表寻找x对应的值,这个值就是n个人时的解.变回去的公式:x'=(x+k)%n=(x+m)%n.
如何知道(n-1)个人报数的问题的解?对,只要知道(n-2)个人的解就行了.(n-2)个人的解呢?当然是先求(n-3)的情况 ---- 这显然就是一个倒推问题.
令f[i]表示i个人玩游戏报m退出最后胜利者的编号,最后的结果自然是f[n]
递推公式
f[1]=0;
f[i]=(f[i-1]+m)%i;   (i>1)
有了这个公式,我们要做的就是从1至n顺序算出f[i]的数值,最后结果是f[n].因为实际生活中编号总是从1开始,我们输出f[n]+1
这个算法的时间复杂度为O(n).

matlab编程:编号,报数,求留有20个小朋友,按1,2,3,...,20编号围坐一圈,从第一个人开始从1到5报数,报到5的退出(不在在围成的圈内),从下一个开始,继续从1开始循环报数,报到5的退出,如此重复, VB编程17人编号为0-16围成一圈,0号人开始从1报数,凡是报数为3倍数的人离开圈子,继续报数,直到剩下1人,求此人编号. matlab编程问题,求大神帮忙! java编程,100个小朋友围成一圈,各个孩子的编号为1到100,假设从第一个开始报数,报到3的孩子退出,如此循环.最后剩下的一个编号是多少? 求matlab编程求解贝塔的最大最小值 用matlab编程,求1到100的和! 用MATLAB,求此矩阵的行列式?如何编程? 为什么用MATLAB编程求sin(π)不等于0 matlab编程,偏微分愁死小白了,求指导 约瑟夫环 已知n个人围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列,m是什么n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数.求胜利者的编号.m是什 matlab求曲线长度如何编程这个曲线如何使用matlab求长度.t为(0,π/2)曲线长度 matlab如何编程,最好写出matlab程序. matlab编程应用题 matlab矩阵求求解微分方程组{用matlab编程}数值求解微分方程组求程序 matlab用二分法求方程的近似根,保留小数点后四位有效数字.用matlab编程. 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字要求只要用java 写的 有500个小朋友报数,1,2,3,1,2,3……循环报数,数到3则退出.编程求出最后一个退出的小朋友.(20 三道C语言题目,求大神(用指针的方法).1.有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子.如此循环,直到留下最后 matlab编程语言,如图, matlab 级数求和怎么编程