查看: 165|回复: 1|关注: 0

[已解决] matlab 中关于约瑟夫环的问题。

[复制链接]

新手

7 麦片

财富积分


050


2

主题

2

帖子

0

最佳答案
n
个人围成一圈,按序列编号。从第
1
个人开始报数,数到
m
时该人退出,并且下一个从
1
重新开始报数,求出出圈人的顺序
(n>m
,例如
n=20
m=7)
请编写一个通用程序。

望解答,谢谢!



新手

9 麦片

财富积分


050


0

主题

4

帖子

1

最佳答案
发表于 2019-11-3 15:25:49 | 显示全部楼层 |此回复为最佳答案
clear all
n=200;
m=7;
node=1:n; %存放所有存在节点的序号
now=1;%记录轮到的人1-20
i=1; %记录当前叫到的号码1-7
result=[]; %存放结果顺序
while length(node)~=0
    if mod(i,m)==0
        result=[result,now];
        i=1;
        now1=now;
        if now==max(node);
            now=node(1);
        else
            now=node(find(node==now)+1);
        end
        node(find(node==now1))=[];
    else
        i=i+1;
        if now==max(node);
            now=node(1);
        else
            now=node(find(node==now)+1);
        end
    end
end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表