b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

约瑟夫环:递归算法

电脑杂谈  发布时间:2016-04-11 14:43:18  来源:网络整理

你是否正在寻找关于约瑟夫环的内容?让我把最权威的东西奉献给你:

约瑟夫环:递归算法

假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少?

现在假设m=10

0 1 2 3 4 5 6 7 8 9 k=3

第一个人出列后的序列为:

0 1 3 4 5 6 7 8 9

即:

3 4 5 6 7 8 9 0 1(*)

我们把该式转化为:

0 1 2 3 4 5 6 7 8 (**)

则你会发现: ((**)+3)%10则转化为(*)式了

也就是说,我们求出9个人中第9次出环的编号,最后进行上面的转换就能得到10个人第10次出环的编号了

设f(m,k,i)为m个人的环,报数为k,第i个人出环的编号,则f(10,3,10)是我们要的结果

当i=1时, f(m,k,i) = (m+k-1)%m

当i!=1时, f(m,k,i)= ( f(m-1,k,i-1)+k )%m

所以程序如下:

int fun(int m,int k,int i){ if(i==1) return (m+k-1)%m; else return (fun(m-1,k,i-1)+k)%m; } int main(int argc, char* argv[]) { for(int i=1;i<=10;i++) printf("第%2d次出环:%2d\n",i,fun(10,3,i)); return 0; }

第 1次出环: 2 第 2次出环: 5 第 3次出环: 8 第 4次出环: 1 第 5次出环: 6 第 6次出环: 0 第 7次出环: 7 第 8次出环: 4 第 9次出环: 9 第10次出环: 3

posted on

以上就是关于约瑟夫环的全部内容,相信你一定会非常满意,。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-100-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 牧田哲也
        牧田哲也

        芝麻糊里面都是密封包装

      • 卢尚书
        卢尚书

        导致北洋舰队大东沟海战失利

      热点图片
      拼命载入中...