平成23年特別午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
kaさん  
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm08.html
eとfの範囲がわかりませんでした。解説お願いしたいです。
2020.12.22 19:30
サラダバーさん 
(No.2)
どういう風にわからないのかがわからないので、とりあえず説明します。
ここで考えるのは関数Nextから呼ばれるときのInitが取りうる値の範囲です。
まず、ここの問題にあるNとは、関数Initが受け取るInit(整数型:S[ ],整数型:N,整数型:K)の整数型Sであり、関数Nextの中にある変数Lを指しています。同様に、問題のKとは、関数NextのCを指しています。
それを踏まえた上で、次に前提となるのは関数Nextは最初に現れる「1.0」を見つけ出すアルゴリズムです。
そして、アルゴリズムを読む限り、1が現れればLに1が足される様です。
では、この問題で出ているアルゴリズムに使用される文字列の中に、最大で1はいくつ出るかといえば、もちろん3つです。そして、最終形である「0.0.0.1.1」の場合、一度もLが足されることはないので、下限は0。つまり、Nの取りうる範囲は0~3となります。
Kも、同じ様に考えれば答えが導けるはずです。
2020.12.24 14:22
guestさん 
FE ブロンズマイスター
(No.3)
もし間違っていたらすみませんが、
サラダバーさん(No.2)の
> そして、アルゴリズムを読む限り、1が現れればLに1が足される様です。
この部分について、S[L]==1でなくてもL=L+1自体はされるのではないでしょうか?

なので、Nの上限は1の数ではなく、なるべくS[]の末端のほうで「10」パターンを検出される場合を考えればよく
S=【01110】において、L[4]=1 & L[4+1]=0により、Initルートに突入。
Nの上限=L-1=4-1=3。
2020.12.25 15:20
guestさん 
FE ブロンズマイスター
(No.4)
No.3の訂正  m(__)m
誤:
> S=【01110】において、L[4]=1 & L[4+1]=0により、Initルートに突入。
正:
S[4]=1 & S[4+1]=0
2020.12.25 15:24
サラダバーさん 
(No.5)
確かに、そうですね・・・。
僕の説明の仕方も悪かったですし、変に噛み砕こうとしたせいで、アルゴリズムを読み間違えてすらいたようです。
ご指摘ありがとうございます。以降気をつけます。
質問者さんにも、謝っておきます。
2020.12.26 15:12

返信投稿用フォーム

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

その他のスレッド


Pagetop