基本情報23年 特別 午後 問9 設問1−1
【解き方】
設問1
まず、
if ( (hall[row][no].seat_class〜
のIF文で、空席かどうかチェックしている。
そのあとのif(++cnt >= num)
で、人数分あったかなかったかをみて、
aは、あったとき、
bはなかったとき
をみている。
<<aについて>>
ずっと下のIF文で
if ( found!=0)ときいて、見つかった値をセットしているので、
みつかったら、foundを1にしないと、いけないことがわかる。
なので、aはfound=1
<<bについて>>
では、bはfound=0?と考えると、そんな単純なもんじゃない。
found=0は初期化されたときにやっている。
だから、ここでそれをやる必要がない。
こういうときは、具体的に考える。
たとえば、5人連続席を取りたかったとき、
3人までOKで4人目のときNG、
そのあと2人おいて、また3人あいている
はじめの3人までOKの時点で、cntがあがっている。
このとき、cntを0にしないで先に進んでしまうと、
そのあと2人おいたときも、cntは値を保持、
2度目の3人空いているときは、前に数えたつづきからcntを数えるから、
結果、席がとれることになってしまう
そこでbに、cnt=0をいれて、クリアしないといけない。
【答え】
a オ
b ア