H23_haru_FE_PM Q08 Qus.

平成23年 春期 基本情報技術者 午後 問8

問 8 次のプログラムの説明及びプログラムを読んで、設問に答えよ。

N個の要素中からK個の要素を選ぶ組合せをすべて求める。
例えば、5個の要素中から3個の要素を選ぶ組合せの場合、計10通りある組合せをすべて求める。
プログラムでは、N個の要素(要素番号 1~N)からなる配列Sを用意し、このうちK個の要素には1を、残りの要素には0を設定することによって、組合せの一つを表現する。
例えば、図1(1)のように5個の要素1~5中から3個の要素2,4,5を選んだ状態は、プログラム中では図1(2)のとおりに表現する。
画像

[プログラムの説明]
プログラムは、主プログラム Main 並びに
組合せを求めるための関数 Init 及び Next からなる。

主プログラム Main
機能:N=5,K=3 として、5個の要素中から3個の要素を選ぶ組合せ
計10通りを順次求めて、配列 S に設定する。
整数型関数: Init(整数型:S[],整数型:N,整数型:K)
引数:S[] は出力用、N 及び K は入力用の引数である。
機能:1≦K≦N の場合、配列 S の先頭から K 個の要素に 1 を、
続く N-K 個の要素に 0 をそれぞれ設定し、返却値として 0 を返す。
それ以外の場合、配列 S には値を設定せずに、返却値として -1 を返す。
整数型関数: Next(整数型:S[],整数型:N)
引数:S[] は入出力用、N は入力用の引数である。
機能:渡された配列 S の先頭から N 個の要素には、
直近に求めた組合せの状態が設定されている。
この渡された組合せの状態に対して所定の操作を行い、
次の組合せの状態を求めて配列 S に設定し、返却値として 0 を返す。
ただし、渡された組合せの状態が、
この関数のアルゴリズムで得られる最終形である場合、
配列 S には値を設定せずに、返却値として -1 を返す。
画像

設問
次の記述中の[  ]に入れる正しい答えを、解答群の中から選べ。

(1)
主プログラム Main で、配列 S に組合せの一つの状態が得られるたびに、
配列 S の内容を印字したい。
印字には次の副プログラムを用いる。

副プログラム Dump(整数型:S[],整数型:N)
引数:S[] 及び N は入力用の引数である。
機能:配列 S の先頭から N 個の要素に
格納されている値を、1行に印字する。

そのためには、主プログラム Main の α の部分を
[ a ]に示す部分と入れ替えればよい。

(2)
関数 Next は、受け取った配列 S を要素番号の小さい方から検査し、
連続する2要素の値が[ b ]に見つかったものについて、その内容を入れ替える。
続いて、配列 S の一部でその2要素[ c ]の部分について関数 Init を呼ぶ。
例えば、関数 Next の実行開始時点で、
配列 S の要素番号1~5が、1,0,1,0,1 であったとき、
実行終了時点での配列 S の要素番号1~5の内容は[ d ]となる。

(3)
このプログラムを実行して、関数 Init が関数 Next から呼ばれるとき、
関数 Init が受け取る N の値の範囲は[ e ]
K の値の範囲は[ f ]である。

(4)
主プログラム Main の実行終了時点において、
配列 S の要素番号1~5の内容は[ g ]となっている。

a に関する解答群
画像

b に関する解答群
ア 0,1で最後
イ 0,1で最初
ウ 1,0で最後
エ 1,0で最初

c に関する解答群
ア 及びその後
イ 及びその前
ウ より後
エ より前

d に関する解答群
ア 0,1,1,0,1
イ 1,0,0,1,1
ウ 1,0,1,1,0
エ 1,1,0,0,1

e,f に関する解答群
ア 0~2
イ 0~3
ウ 1~3
エ 1~4
オ 2~4
カ 2~5

g に関する解答群
ア 0,0,0,0,0
イ 0,0,1,1,1
ウ 1,1,1,0,0
エ 1,1,1,1,1

解答と解説

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント