ARC006A,Bとcinとgetline

投稿者: | 2021年5月17日

いろいろあった。

1.A問題 – 宝くじ

問題:A – 宝くじ

やるだけ。if~elseはどこかでtrueになったらそれ以降は判定されないことを知っていれば書ける。

2.B問題 – あみだくじ

問題:B – あみだくじ

あみだくじを逆順に辿る問題。やること自体はわかりやすい。ただ実装が面倒くさい。

一番面倒くさい点は、入力に空白があるのでcinでは1行全てを読み取れないことです。1行読み取るためにはgetlineを使います。しかし、その前にcinがある場合、その後のgetlineは前の入力の改行から読み取り始めます。これを防ぐため、ignore()を用いて前のストリームを捨てる必要があります。

あみだくじを下から辿る実装はそこまで難しくないです。私はあみだくじを隣接行列に変換して無向グラフを辿るように解いていますが、結局今の位置さえわかっていればいいので、その位置だけ常に追い続ける実装でもいいと思います。

3.参考文献

std::getline

std::basic_istream::operator>>

std::basic_istream::ignore

for文の1回目でgetlineが無視される

std::getline

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください