标签:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define N 41 //总人数 4 #define M 3 //报到3死 5 int main() 6 { 7 int man[N+1]={0}; 8 int count=1; 9 int i=0,pos=-1; 10 int alive=0; 11 while(count<=N) 12 { 13 while(1) 14 { 15 pos=(pos+1)%N; //约瑟夫环序列 16 if(man[pos]==0) //若为0则说明这个位置还有人,则继续累加 17 i++; 18 if(i==M) //若到M 则重新开始累加 并跳出当前循环 19 { 20 i=0; 21 break; 22 } 23 } 24 man[pos]=count; //设当前这个位置 为死的次序 25 count++; 26 } 27 printf("\n最初位置-约瑟夫环位置\n"); 28 for(i=0;i<N;i++) 29 { 30 printf("%d-%d ",i+1,man[i]); 31 if(i!=0&&i%10==0) 32 printf("\n"); 33 } 34 35 printf("\n\n准备剩下的人数\n"); 36 scanf("%d",&alive); 37 alive=N-alive; 38 for(i=0;i<N;i++) 39 if(man[i]>alive) 40 printf("初始序列%d,约瑟夫环序列%d\n",i+1,man[i]); 41 return 0; 42 }
标签:
原文地址:http://www.cnblogs.com/threezj/p/4527100.html