约瑟夫环

来源:互联网 发布:手机cf国外视频软件 编辑:程序博客网 时间:2024/06/05 02:05

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。

f[1]=0;
f[i]=(f[i-1]+m)%i;  (i>1)(递推公式)

#include <stdio.h>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 ("\nThe winner is %d\n", s+1); }


原创粉丝点击