平成23年特別午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
トマさん  
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm08.html
3つ質問があります。

解答欄a:組み合わせの1つの状態が得られる度に配列Sを印字...とあり、Nextで組み合わせを求めてDumpで表示すると考え、Next⇒Dumpの順に処理するのだと思ったのですが、なぜDumpを先に処理するのでしょうか?また、選択肢アとエで、なぜアになるのかも教えてほしいです。

解答欄g:答えを導き出すために使う配列Sの値は何を使えばいいのでしょうか?特に指定されていないので何でもいいのでしょうか?また、答えの導き出し方も教えて下さい

アルゴリズム問題の得点率について
今のところ、初見の問題でも5~6割、問題によっては初見問題で8割から全問正解できるところまでできるようになりました。ギリギリまで勉強する予定ですがこれくらい解けていれば一応安心できるでしょうか?それともまだ勉強が足りないでしょうか?主観で構わないので意見を聞きたいです。
2022.11.03 17:36
jjon-comさん 
FE ゴールドマイスター
(No.2)
> Nextで組み合わせを求めてDumpで表示すると考え、
> Next⇒Dumpの順に処理するのだと思ったのですが、
> なぜDumpを先に処理するのでしょうか?

(Next()関数をまだ呼び出していない段階での)
初回のInit()の呼び出しで配列Sは[1,1,1,0,0]になり、これは
> 5個の要素中から3個の要素を選ぶ組合せ
の一例になっています。したがって、Next()を呼び出す前にこの配列をDump()表示しておかないと、組合せの一例が表示されません。

問題文中のNext()の機能の説明文にもこう書いてあります。

> 渡された配列Sの先頭からN個の要素には,
> 直近に求めた組合せの状態が設定されている。
> この渡された組合せの状態に対して所定の操作を行い,
> 次の組合せの状態を求めて配列Sに設定し,

Next()を呼び出す前にこの「直近に求めた組合せ」をDump()表示しておかないと、「直近に求めた組合せ」は表示されません。

--------
> 選択肢アとエで、なぜアになるのかも教えてほしいです。

問題文中のNext()の機能の説明文にはこう書いてあります。

> 渡された組合せの状態が,
> この関数のアルゴリズムで得られる最終形である場合,
> 配列Sには値を設定せずに,返却値として-1を返す。

これを選択肢エに対応させるとこうなります。

■R=0
|・Dump(S, N)  …この行で表示した、Nextに渡す前のSが最終形なら
|・R←Next(S, N)  …このNext呼出しはSに値を設定せず、-1を返す

・Dump(S, N)  …よってここでのSの表示は不要

--------
> 解答欄g:答えを導き出すために使う配列Sの値は何を使えばいいのでしょうか?

前述のとおり、初回のInit()の呼び出しで配列Sは[1,1,1,0,0]になりますので、これを試用します。

> 答えの導き出し方も教えて下さい

プログラムの流れを追って、値の変化を書き起こしていく方法で解きます。

if分岐、for繰り返し、配列、関数呼出しで構成されているアルゴリズムですから、適当なプログラム言語で実際にコーディングして実行確認してみれば実例で理解できるでしょう。
2022.11.03 21:03
トマさん  
(No.3)
解説ありがとうございます!スッキリしました。
2022.11.05 13:07

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop