過去問解きまくり研究所 ホーム

平成23年度 秋期 午前 問7

アルゴリズム

配列に関する問題

要素番号が0から始まる配列 TANGO がある。n 個の単語が TANGO[1] から TANGO[n] に入っている。図は,n 番目の単語を TANGO[1] に移動するために,TANGO[1] から TANGO[n−1] の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。a に入れる処理として,適切なものはどれか。

〔流れ図〕
      ( 開始 )
          │
  〔 TANGO[n] → TANGO[0] 〕
          │
  ⌈ ループ                  ⌉
  ⌊  i : n−1, −1, 0        ⌋
          │
      [  a  ]
          │
  ⌈ ループ                  ⌉
          │
      ( 終了 )

(注)ループにおける条件は,
      変数名:初期値,増分,終値
   を示す。
答えと解説を見る

✓ これが正解アTANGO[i] → TANGO[i+1]

解説

後ろ側から順に、自分の値を一つ後ろへ写します。

この流れ図は、まず末尾の単語を配列の0番へ待避しています。0番には単語が入っていないので、作業用の置き場として使えます。次にループが、添字を末尾の一つ手前から1ずつ減らしながら0まで回ります。ここで行いたいのは、前に詰まっている単語を一つずつ後ろへ送る作業です。上書きで値を失わないためには、後ろ側から先に送らなければなりません。添字が大きいほうから始まっているのはそのためです。ループが0まで下りてくると、待避してあった末尾の単語が先頭へ入り、求める並びが出来上がります。判定の軸は二つです。写す元と写す先が隣り合っているか、そして写す先が元より後ろ側になっているかです。この二つが満たされていれば、添字が減るにつれて単語が一つずつ後ろへずれ、最後の一回で待避した値が先頭へ収まります。

ほかの選択肢はなぜ違うのか

出典:平成23年度 秋期 基本情報技術者試験 午前 問7(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)