平成23年特別試験午後問題 問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問8 データ構造及びアルゴリズム

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

 N個の要素中からK個の要素を選ぶ組合せをすべて求める。例えば,5個の要素中から3個の要素を選ぶ組合せの場合,計10通りある組合せをすべて求める。
 プログラムでは,N個の要素(要素番号1~N)からなる配列Sを用意し,このうちK個の要素には1を,残りの要素には0を設定することによって,組合せの一つを表現する。例えば,図1(1)のように5個の要素1""5中から3個の要素2,4,5を選んだ状態は,プログラム中では図1(2)のとおりに表現する。
pm08_1.png
〔プログラムの説明〕
 プログラムは,主プログラム 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を返す。
pm08_2.png

設問

次の記述中の に入れる正しい答えを,解答群の中から選べ。
  • 主プログラムMainで,配列Sに組合せの一つの状態が得られるたびに,配列Sの内容を印字したい。印字には次の副プログラムを用いる。

    副プログラムDump(整数型: S[ ],整数型: N)
    引数:
    S[ ]及びNは入力用の引数である。
    機能:
    配列Sの先頭からN個の要素に格納されている値を,1行に印字する。
     そのためには,主プログラムMainのαの部分をaに示す部分と入れ替えればよい。
  • 関数Nextは,受け取った配列Sを要素番号の小さい方から検査し,連続する2要素の値がbに見つかったものについて,その内容を入れ替える。続いて,配列Sの一部でその2要素cの部分について関数Initを呼ぶ。例えば,関数Nextの実行開始時点で,配列Sの要素番号1~5の内容が1,0,1,0,1であったとき,実行終了時点での配列Sの要素番号1~5の内容はdとなる。
  • このプログラムを実行して,関数Initが関数Nextから呼ばれるとき,関数Initが受け取るNの値の範囲はe,Kの値の範囲はfである。したがって,関数Initが受け取るNとKの値は,1≦K≦N を満たさない場合がある。
  • 主プログラムMainの実行終了時点において,配列Sの要素番号1~5の内容はgとなっている。
a に関する解答群
  • pm08_3a.png
  • pm08_3i.png
  • pm08_3u.png
  • pm08_3e.png
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:
  • a=
  • b=
  • c=
  • d=
  • e=
  • f=
  • g=

解説

この設問の解説はまだありません。

Pagetop