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

令和元年度 秋期 午前 問9

アルゴリズム

配列に関する問題

配列 A が図2の状態のとき,図1の流れ図を実行すると,配列 B が図3の状態になった。図1のaに入れる操作はどれか。ここで,配列 A,B の要素をそれぞれ A(i, j),B(i, j) とする。

図1 流れ図:

開始
 ↓
ループ1  i:0, 1, 7(注)
 ↓
ループ2  j:0, 1, 7(注)
 ↓
a
 ↓
ループ2(終わり)
 ↓
ループ1(終わり)
 ↓
終了

(注)ループ端の繰返し指定は,変数名:初期値,増分,終値 を示す。

図2 配列 A の状態(行が i,列が j。`*` が要素の在る位置):

i\j01234567
0******
1*
2*
3****
4*
5*
6*
7*

図3 実行後の配列 B の状態:

i\j01234567
0
1********
2**
3**
4**
5*
6*
7
答えと解説を見る

✓ これが正解エB(j, 7−i) ← A(i, j)

解説

行と列を入れ替えたうえで、行番号だけを七から引く操作です。

配列の添字を組み替える問いは、目印になる形を一つ選んで追うのが近道です。元の配列で分かりやすいのは、縦一列に並んだ列1の八個です。移した後の配列では、行1が横一列に八個そろっています。縦に並んでいたものが横になったのですから、行と列が入れ替わっています。入れ替えるだけなら、元の位置の行番号がそのまま新しい列番号になるはずです。ところが元は上から下へ、移した後は右から左へ並んでいます。つまり片方の数え方が逆向きになっているので、七から引く形が必要です。元の行0にあった横並びが、移した後は列7の縦並びに変わっている点も、まったく同じ形です。行と列を入れ替え、そのうえで行番号だけを七から引く。これが求める操作です。目印を二つ選び、両方が合うかどうかを確かめれば、それがそのまま検算になります。

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

出典:令和元年度 秋期 基本情報技術者試験 午前 問9

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