基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成23年 春期 基本情報技術者 午後 問08
問08   必須問題

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

 N 個の要素中から K 個の要素を選ぶ組合せをすべて求める。例えば,5個の要素中から 3個の要素を選ぶ組合せの場合,計 10 通りある組合せをすべて求める。

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


   図1 5個の要素中から3個の要素を選ぶ例とそのプログラム中での表現

〔プログラムの説明〕

 プログラムは,主プログラム 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 のαの部分を に示す部分と 入れ替えればよい。

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

(3)  このプログラムを実行して,関数 Init が関数 Next から呼ばれるとき,関数 Init が受け取る N の値の範囲は ,K の値の範囲は である。 したがって,関数 Init が受け取るNとKの値は,1 ≦ K ≦ N を満たさない場合がある。

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

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

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます

解答 g ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]