约瑟夫环-数组实现

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int m,n,queue[1000];
 6     for(int j=1;j<=1000;j++)
 7     {
 8         queue[j]=j;//标号 
 9     }
10         cout<<"输入人数和报到出圈数字:";
11         cin>>n>>m;
12         int flag=1;//真数组下标 
13         int count=0;//结束计数器 
14         cout<<"出队序列:";
15         for(int i=1;i<=m;i++)//i->出圈计数器-- 
16         {
17                if(queue[flag]==0)
18                {
19                 i--;
20             }
21             if(i==m)
22             {
23                 cout<<queue[flag]<<" ";
24                 queue[flag]=0;
25                 i=0;//归零,重新计数 
26                 count++;
27             }
28             if(flag>=n)
29             {
30                 flag=flag%n;    
31             }
32             if(count==n)
33             {
34                 cout<<endl;
35                 break;
36             }    
37             flag++;
38         } 
39     return 0;
40 }

//有志者,事竟成!

原文地址:https://www.cnblogs.com/yocichen/p/6639456.html