首页 > 代码库 > 约瑟夫问题
约瑟夫问题
/*
*给定正整数k(<14),n=2k个人分别分成前后两组,编号为1---k,
和k+1---n,要求计算最小的m,按约瑟夫规则,最先出局者为后面k个人;
*/
1 #include<stdio.h> 2 int joseph(int k){ 3 int m,t,a=1,b,i,n; 4 while(1){ 5 for(b=1;b<=k;b++){ 6 m=a*k+b,t=0,n=2*k; 7 for(i=1;i<=k;i++){ 8 t=(t+m-1)%n; 9 if(t<k) 10 break; 11 n--; 12 } 13 if(i>k) 14 return m; 15 } 16 a+=2; 17 } 18 return 0; 19 } 20 int main(){ 21 int k; 22 scanf("%d",&k); 23 printf("%d\n",joseph(k)); 24 return 0; 25 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。