猴子挑大王问题

问题描述:
一些人,围成一圈123报数,报到3的人退出,求最后一个人是几号

解答:NUM是总人数

 1 #include <iostream>
 2 #define NUM 5
 3 using namespace std;
 4 
 5 int n[NUM];
 6 int main() {
 7     
 8     int index=1;
 9     int totalLast=NUM;
10     int demo=0;
11     for(int i=0;i<NUM;i++)
12         n[i]=1;
13     while(totalLast!=1)
14     {
15         if(n[demo]==0)
16         {
17             demo++;
18             if(demo==NUM)
19                 demo=0;
20         }else
21         {
22             
23             if(index==3)
24             {
25                 n[demo]=0;
26                 index=0;
27                 totalLast--;
28             }
29             //cout<<"debug :"<<n[demo]<<endl;
30             demo++;
31             if(demo==NUM)
32                 demo=0;
33             index++;
34         }
35         
36     }
37     
38     for(int i=0;i<NUM;i++)
39     {
40         if(n[i]!=0)
41             cout<<i+1<<endl;
42     }
43     return 0;
44 }

 

posted @ 2019-12-04 21:46  时光潜流  阅读(213)  评论(0编辑  收藏  举报