teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

文言修正

2020/04/07 17:00

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  ```C++
2
2
  a.erase(a.begin() + i - 1);
3
3
  ```
4
- ここで`a.begin()`より前の要素を消去しようとしています。
4
+ ここで`a.begin()`より前の範囲外要素を消去しようとしています。
5
5
 
6
6
  > また、解答例のvis[]とwhile{}の中で何故そのように書くのか、どういう仕組みなのかが理解できません。
7
7
 

1

解答例説明追加

2020/04/07 17:00

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,4 +1,13 @@
1
1
  ```C++
2
2
  a.erase(a.begin() + i - 1);
3
3
  ```
4
- ここで`a.begin()`より前の要素を消去しようとしています。
4
+ ここで`a.begin()`より前の要素を消去しようとしています。
5
+
6
+ > また、解答例のvis[]とwhile{}の中で何故そのように書くのか、どういう仕組みなのかが理解できません。
7
+
8
+ ・`vis[]`は残っている人の席を`0`、抜けた人の席を`1`
9
+ ・`count`は前回抜けた人の次からの残っている人がいたの席のカウント
10
+ ・`rev`は残っている人数
11
+ `while{}`で残り1人になるまでループ。
12
+ `do{}while(vis[k]==1);`で抜けた人の席を読み飛ばし。
13
+ としているだけです。