C++の文法のK番目の記号
最初の行に0があるとします。後続のすべての行で、前の行を見て、0の各出現を01に、1の各出現を10に置き換えます。N行とインデックスKがあると仮定します。行NでK番目のインデックス付きシンボルを見つける必要があります(Kの値は1インデックスです)(1インデックス)。したがって、N=4およびK=5の場合、出力は1になります。これは-
- 行1:0
- 行2:01
- 行3:0110
- 行4:01101001
これを解決するには、次の手順に従います-
- メソッドの名前がkthGrammarであるとします。これにはNとKが必要です。
- Nが1の場合、0を返します
- kが偶数の場合、kthGrammar(N – 1、K / 2)が0の場合は1を返し、それ以外の場合は0を返します
- それ以外の場合は、kthGrammar(N – 1、(K + 1)/ 2)を返します
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: int kthGrammar(int N, int K) { if(N == 1) return 0; if(K % 2 == 0){ return kthGrammar(N - 1, K / 2) == 0 ? 1 : 0; }else{ return kthGrammar(N - 1, (K + 1) / 2); } } }; main(){ Solution ob; cout << (ob.kthGrammar(4, 5)); }
入力
4 5
出力
1
-
C++で文字列として表されるツリーのk番目のレベルのノードの積
文字列形式のデータを持つノードのツリーで与えられ、タスクは、バイナリツリーのk番目のレベルでノードの積を見つけることです。ツリーのすべてのノードには、データ部分、左サブツリーの左ポインタ、右サブツリーの右ポインタの3つが含まれています。 二分木のレベルは0から始まり、任意の正の数である「n」まで続くことができます。したがって、レベル「k」が与えられ、プログラムは与えられた「k」レベルでノードの積を計算する必要があります。 二分木で、k=2の値が与えられたとしましょう したがって、レベル2のノードは-40、50、60です。 製品=40* 50 * 60 =1,20,000 入力
-
C ++での「&」記号の使用法は何ですか?
&記号はC++で演算子として使用されます。これは2つの異なる場所で使用されます。1つはビット単位の演算子として、もう1つは演算子のポインタアドレスとして使用されます。 ビットごとのAND ビットごとのAND演算子(&)は、第1オペランドの各ビットを第2オペランドのそのビットと比較します。両方のビットが1の場合、ビットは1に設定されます。それ以外の場合、ビットは0に設定されます。ビット単位のAND演算子の両方のオペランドは、整数型である必要があります。 例 #include <iostream> using namespace std; int mai