基本情報技術者過去問題 平成26年秋期 午後問8 解説

問題文は他のサイトを別ウインドウで開いてご覧ください。

プログラムの1行目で要求されている引数を用意します。

この問題にはプログラムの説明文にも引数に使える値がありますが、あわててはいけません。
トレースには設問2の値を利用します。

引数
str1[0 1 2 3 4] str1len
p e a c e 5
str2[0 1 2 3 4 5] str2len
p e o p l e 6



プログラムの最初のループを実行します。

(0,0)
0
(1,0)
1
(2,0)
2
(3,0)
3
(4,0)
4
(5,0)
5




プログラムの2番目のループを実行します。

(0,6)
6
(0,5)
5
(0,4)
4
(0,3)
3
(0,2)
2
(0,1)
1
(0,0)
0
(1,0)
1
(2,0)
2
(3,0)
3
(4,0)
4
(5,0)
5




プログラムの3番目のループの1回目

内側のループの1回目

(1,1)の値を求めます。

空欄「a」がTrueなら
(0,0) すなわち0
(1,0)+1 すなわち2
(0,1)+1 すなわち2
のうち、一番小さい数値を、

空欄「a」がFalseなら
(1,0)+1 すなわち2
(0,1)+1 すなわち2
のうち、一番小さい数値をいれます。

問題文の手順①のcに

「Str1[x]とStr2[y]が同一の文字の場合、(x,y)から(x+1,y+1)に線分を引く」

とありますので、空欄「a」ではStr1[x]とStr2[y]が同一の文字かを判定しています。

よって空欄「a」は「ア」になります。(Str1とStr2の添え字は0からはじまり「x-1」「y-1」と表現しますので、ひっかからないようにしてください。)

(1,1)には0が入ります。
判定がTrueだったときは数値を赤字で表記します。

e (0,6)
6
l (0,5)
5
p (0,4)
4
o (0,3)
3
e (0,2)
2
p (0,1)
1
(1,1)
0
(0,0)
0
(1,0)
1
(2,0)
2
(3,0)
3
(4,0)
4
(5,0)
5
p e a c e

内側のループをあと5回繰り返して外側のループの1回目が終わります。

e (0,6)
6
(1,6)
5
l (0,5)
5
(1,5)
4
p (0,4)
4
(1,4)
3
o (0,3)
3
(1,3)
2
e (0,2)
2
(1,2)
1
p (0,1)
1
(1,1)
0
(0,0)
0
(1,0)
1
(2,0)
2
(3,0)
3
(4,0)
4
(5,0)
5
p e a c e




プログラムの3番目のループの2~5回目

あとはどんどん埋めていくだけです。


e (0,6)
6
(1,6)
5
(2,6)
4
(3,6)
5
(4,6)
6
(5,6)
5
l (0,5)
5
(1,5)
4
(2,5)
3
(3,5)
4
(4,5)
5
(5,5)
6
p (0,4)
4
(1,4)
3
(2,4)
2
(3,4)
3
(4,4)
4
(5,4)
5
o (0,3)
3
(1,3)
2
(2,3)
1
(3,3)
2
(4,3)
3
(5,3)
4
e (0,2)
2
(1,2)
1
(2,2)
0
(3,2)
1
(4,2)
2
(5,2)
3
p (0,1)
1
(1,1)
0
(2,1)
1
(3,1)
2
(4,1)
3
(5,1)
4
(0,0)
0
(1,0)
1
(2,0)
2
(3,0)
3
(4,0)
4
(5,0)
5
p e a c e

設問2の回答です。

赤字の数字の位置と同一のグラフを探せばいいので空欄「c」は「ウ」です。

赤字の数字の数は6個なので空欄「d」は「ウ」です。

細字の数字の数は24個なので空欄「e」は「カ」です。

(5,6)の値が5なので空欄「f」は「イ」です。


ホームに戻るボタン↓