C++での演算子の優先順位
演算子の優先順位は、式内の用語のグループ化を決定します。演算子の結合性は、括弧がない場合に同じ優先順位の演算子をグループ化する方法を決定するプロパティです。これは、式の評価方法に影響します。特定の演算子は他の演算子よりも優先されます。たとえば、乗算演算子は加算演算子よりも優先されます:
たとえば、x =7 + 3 * 2;ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2が乗算され、次に7に加算されます。
ここでは、優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
カテゴリ | 演算子 | 結合性 |
---|---|---|
接尾辞 | ()[]->。 ++ --- | 左から右 |
単項 | +-! 〜++ ---(タイプ)*&sizeof | 右から左 |
乗法 | * /% | 左から右 |
追加 | +- | 左から右 |
シフト | <<>> | 左から右 |
リレーショナル | <<=>> = | 左から右 |
平等 | ==!= | 左から右 |
ビット単位のAND | & | 左から右 |
ビット単位のXOR | ^ | 左から右 |
ビット単位のOR | | | 左から右 |
論理積 | && | 左から右 |
論理OR | || | 左から右 |
条件付き | ?: | 右から左 |
割り当て | =+ =-=* =/ =%=>> =<<=&=^ =| = | 右から左 |
カンマ | 、 | 左から右 |
-
C++の連続ツリー
連続ツリーは、ルートノードからリーフノードへのパスがノードの値または重みを持ち、親ノードとそのすべての直接子ノードの絶対差が常に1になるツリーとして定義されます。 ルートからリーフへのパス上のノードを選択すると、 |ノードの重み-左の子ノードの重み|=|左の子ノードの重み-ノードの重み| =1、これは正しい子にも当てはまります |ノードの重み-右の子ノードの重み|=|右の子ノードの重みl-ノードの重み| =1 図 例を挙げて理解しましょう。 下のツリーは、親ノードとその子の絶対差が常に1であるため、連続しています。 以下のツリーは、連続ツリーとしての資格があり
-
C++での最大二分木
整数配列があるとします。その配列内のすべての要素は一意です。この配列での最大ツリー構築は、次のように定義されます- ルートは配列内の最大数を保持します。 左側のサブツリーは、サブアレイの左側を最大数で割って構築された最大ツリーです。 右側のサブツリーは、サブアレイの右側を最大数で割って構築された最大ツリーです。 最大の二分木を構築する必要があります。したがって、入力が[3,2,1,6,0,5]の場合、出力は-になります。 これを解決するには、次の手順に従います- Solve()というメソッドを定義します。これにより、リストと左右の値が取得されます。関