応用情報技術者平成28年春期 午前問5

krdfwaさん  
(No.1)
この問題の解説についてですが、
・「※Bより先にAを出力できません。」の部分がわかりません。
この問題はスタックにpushできる順番がA,B,Cでなければらなず、3つ全てpushする前でもpop可能で、各1回push,popを行う、というパターンが何通りかを問うているので、解説は違うように思います。
push(A) → pop(A) → push(B) → pop(B) → push(C) → pop(C) 結果[A,B,C]
push(A) → push(B) → pop(B) → pop(A) → push(C) → pop(C) 結果[B,A,C]
push(A) → push(B) → pop(B) → push(C) → pop(C) → pop(A) 結果[B,C,A]
push(A) → pop(A) → push(B) → push(C) → pop(C) → pop(B) 結果[A,C,B]
push(A) → push(B) → push(C) → pop(C) → pop(B) → pop(A) 結果[C,B,A]



---以下解説---
A,B,Cの出力順序としては6種類があるので、それぞれが出力可能であるかを検証します。

[A,B,C]
push(A) → pop → push(B) → pop → push(C) → pop の順序で出力可能です。
[A,C,B]
push(A) → pop → push(B) → push(C) → pop → pop の順序で出力可能です。
[B,A,C]
push(A) → push(B) → pop → pop → push(C) → pop の順序で出力可能です。
[B,C,A]
push(A) → push(B) → pop → push(C) → pop → pop の順序で出力可能です。
[C,A,B]
push(A) → push(B) → push(C) → pop → pop ×
※Bより先にAを出力できません。
[C,B,A]
push(A) → push(B) → push(C) → pop → pop → pop の順序で出力可能です。

したがって、データの出力順序は5通りになります。
2022.07.12 18:32
chihiroさん 
AP シルバーマイスター
(No.2)
A、B、Cの出力順序は単純に考えれば3!=6通り考えられます。
各パターンが実際に実現可能かどうかを検証すると、C→A→Bのパターンだけは構造上不可能なのでそれを除外した5パターンが答え、というのが解説の解き方だと思います。
解説自体は誤りではないと思います。
2022.07.12 18:47
管理人 
(No.3)
>・「※Bより先にAを出力できません。」の部分がわかりません。
言葉足らずですみません。この部分は[C,A,B]のパターンが無理な理由を述べているつもりです。
以下のように読み替えていただけると助かります。

「Cを一番最初に出力する場合、Bより先にAを出力することはできません。」
2022.07.12 19:36
krdfwaさん  
(No.4)
ご回答ありがとうございます。
解説の意味、わかりました。
2022.07.12 20:15

返信投稿用フォーム

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

その他のスレッド


Pagetop