AtCoderのC++プログラミング入門教材(APG4b)の
演習問題にある「ARC031B-埋め立て」の
模範解答のコードの一部につまづいています。
(クリックして解答例を開く・・・の部分です)
https://atcoder.jp/contests/apg4b/tasks/APG4b_v
リンク内容
// 陸地マスを1つ探す int y, x; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (board.at(i).at(j) == 'o') { y = i; x = j; break; } } } /* 引数: 盤面, チェック二次元配列, y座標, x座標*/ fill_island(board, checked, y, x); // (y, x)から到達できるすべての陸地マスのcheckedをtrueにする
自分が理解した範囲では、if文中のbreakでループを抜けて
そのときのxとyの値を、その下にあるfill_island関数のパラメータに
渡しているように思うのですが、breakが1個しかないので、
内側のjのループは抜けても、外側のiのループは抜けられないですよね。
以下のようなコードにするべきではないでしょうか?
bool finished=false; // 追加 int y, x; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (board.at(i).at(j) == 'o') { y = i; x = j; finished=true; // 追加 break; } } if(finished) break; // 追加 } fill_island(board, checked, y, x);
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/24 07:05