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 }
“弱小和无知不是生存的障碍,傲慢才是。”

浙公网安备 33010602011771号