2022.1.28#约瑟夫环问题的数组优化

2022-01-28


 

1.25日白天:同学聚会加上自己懒惰,断更。(上一篇25日凌晨写的,其实是24日所学)

1.26日:过小年,玩minecraft了。

1.27日:下了个王者荣耀玩,已删...

tj啊tj,你怎能如此堕落下去!


 

上一篇的数组表示使用了

 if (i == n+1)
       i = 1;
       //如果到了末尾,那么就回到首位

来进首尾相连,然而其实可以用取模的方法更加清晰地循环:

i = (i % n)+1;

清晰明了,如此甚好。

代码:

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 int main(void)
 5 {
 6     int n, m;
 7     cin >>n>>m;
 8     vector<int> book(n+1);
 9     int cnt = 0, flag = 0,i=0;
10     while (flag < n)
11     {
12         i = (i % n)+1;
13         if (book[i] == 0)
14         {
15             cnt++;
16             if (cnt == m)
17             {
18                 flag++;
19                 cout << i << ' ';
20                 book[i] = 1;
21                 cnt = 0;
22             }
23         }
24     }
25     return 0;
26 }

“弱小和无知不是生存的障碍,傲慢才是。”

posted @ 2022-01-28 15:32  Tiachi  阅读(40)  评论(0)    收藏  举报