2017-03-07 3 views
0

私はコーディングのインタビューをクラッキングのうち、以下のアルゴリズムに取り組んでいます:{TRUE、FALSE、および、 または、XOR}記号を含むブール式を考えるとブールカッコアルゴリズム

、数を数えますそのような のような式をかっこで囲む方法があります。

著者は、各演算子のcharに括弧を配置する再帰的な解法について詳しく説明します。たとえば、式が1^0^0 | 1ならば、char = 1に置くと、(1)^(0^0 | 1)になります。

彼女は、1からnの2つの式が0からi、i + 1からnまでのすべての演算子char iに対してこれを行い、各部分文字列で再帰関数を呼び出します。

ここに私が理解していないものがあります。たとえば、1 ^(0^0)| 1この式はこのプロセスから除外されます。何故ですか?これも考慮する必要はありませんか?

+0

は左結合性を仮定すると、それは(^ 0 1^0)プロセス 'によって得ることができます) - >((1)^(0^0))|(1) ' – BallpointBen

+3

括弧を冗長にすると、答えはゼロまたは無限になります。 – wildplasser

答えて

0

1^(0^0) | 1は、(1^(0^0)) | (1)と同じです。あなたは括弧を再帰的にに挿入されていることを述べたので

、何も取り残されていない:|(1

 
    1^0^0 | 1 
    | 
    +--(1)^(0^0 | 1) 
    | +--(1)^((0^0) | 1) 
    | +--(1)^(0^(0 | 1)) 
    | 
    +--(1^0)^(0 | 1) 
    | 
    +--(1^0^0) | (1) 
     +--((1^0)^0) | (1) 
     +--(1^(0^0)) | (1) ← here it is