HOME»基本情報技術者試験掲示板»平成23年特別午後問8
投稿する
平成23年特別午後問8 [2581]
kaさん(No.1)
サラダバーさん(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も、同じ様に考えれば答えが導けるはずです。
ここで考えるのは関数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さん(No.3)
★FE ブロンズマイスター
もし間違っていたらすみませんが、
サラダバーさん(No.2)の
この部分について、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。
サラダバーさん(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さん(No.4)
★FE ブロンズマイスター
No.3の訂正 m(__)m
誤:
正:
S[4]=1 & S[4+1]=0
誤:
> 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