-
C++プログラムの素因数
プライムファクター は与えられた数の因数である素数です。 数値の要因 は、与えられた数を得るために乗算される数です。 プライム因数分解 は、数をその素因数で再帰的に除算して、その数のすべての素因数を見つけるプロセスです。 Example : N = 120 Prime factors = 2 5 3 Factorization : 2 * 2 * 2 * 3 * 5 数の素因数について覚えておくべきいくつかのポイント 数の素因数のセットは一意です。 因数分解は、除算、共通の分母の検索など、多くの数学計算で重要です。 これは暗号化における重要な概念です。 数の素因数を見つけるプログラ
-
C++の数値の奇数桁の桁の合計の素数性テスト
この問題では、数Nが与えられます。私たちのタスクは、数の奇数の桁の合計が素数を与えるかどうかを確認することです。 素数性テスト は、与えられた数が素数であるかどうかをチェックするために使用されるアルゴリズムです。 問題を理解するために例を見てみましょう Input: 3425 Output: No Explanation: sum digits at odd place = 5 + 4 = 9, which is not a prime number. この問題を解決する簡単な方法は、数値の奇数の場所にあるすべての数字を加算してから、この合計が素数であるかどうかを確認することです。 ソ
-
C++での素数性テスト
この問題では、数Nが与えられ、それが素数であるかどうかを確認することがタスクです。 素数性テスト ■指定された数が素数であるかどうかをチェックするために使用されるアルゴリズム。 素数は、それ自体でのみ除算できる数です。例:2、3、5、7。 私たちの問題を理解するために例を見てみましょう Input: 11 Output: Yes 数の素数性テストをチェックする方法は複数あります。 素数性をチェックする簡単な方法の1つは、N未満のすべての数値による数値の除算をチェックすることです。いずれかの数値がNを除算する場合、それは素数ではありません。 すべてのi=2-n-1を確認します。 n
-
C ++でのプリムのアルゴリズム(隣接行列表現の単純な実装)
プリムのアルゴリズム は、特定の重み付き無向グラフの最小全域木を見つけるために使用される欲張り法です。 加重グラフ は、重み値を持つすべてのエッジを持つグラフです。 無向グラフ は、すべてのエッジが双方向である特殊なタイプのグラフです。 最小スパニングツリー は、すべてのエッジと頂点を含み、サイクルを含まず、エッジの総重みが可能な限り少ないサブセットです。 この記事では、最小スパニングツリーを見つけるためのプリムのアルゴリズムについて学習します。通常、アルゴリズムは2つの配列を使用しますが、このソリューションでは1つだけを使用します。 プリムのアルゴリズムの実装を示すプログラム。 例
-
C++のセットビット数が1つ少ない以前の小さい整数
この問題では、整数nが与えられます。私たちのタスクは、数値の2進表現の1セットビットを変更することによって形成できるn未満の最大の数値を出力することです。 問題を理解するために例を見てみましょう Input: n = 3 Output: 2 Explanation: (3)10 = (011)2 Flipping one set bit gives 001 and 010. 010 is greater i.e. 2. この問題を解決するには、右端のセットビットを反転してゼロにする必要があります。これにより、数値の1ビットを反転して検出されるn未満の可能な最大の数値が作成されます。 ソリ
-
C++の1の補数と同じ前の数値
この問題では、整数nが与えられます。私たちの仕事は、前の数字がその数字の1の補数に等しい天気をチェックすることです。 問題を理解するためにいくつかの例を見てみましょう Input: 12 Output: No Explanation: (12)10 = (1100)2 Preceding number 11 = (1011)2 1’s complement of 12 = (0011)2 Input: 4 Output: Yes Explanation: 4 = (100)2 Preceding number 3 = (011)2 1’s complement of
-
C++の以前のより大きな要素
この問題では、配列が与えられます。私たちのタスクは、配列内の現在の要素の前にある最大の要素を返すことです。それ以外の場合は-1を出力します。 問題を理解するために例を見てみましょう Input: {6, 2, 7, 1, 5, 3} Output: -1, 6, -1, 7, 7, 7 この問題を解決するための簡単で明白な解決策は、配列の前の部分のより大きな要素をチェックするネストされたループを使用することです。 ソリューションの実装を示すプログラム 例 #include <iostream> using namespace std; void preceddingGreat
-
C++での再帰なしのN-aryツリーのプレオーダートラバーサル
この問題では、N-aryツリーが与えられます。私たちのタスクは、ツリーのプレオーダートラバーサルを印刷することです。 まず、いくつかの基本的な用語を学びましょう。 N-aryツリー は、すべてのノードが最大N個の子ノードを持つことができるツリーです。例2-ary(バイナリ)ツリーには最大2つの子ノードがあります。 プレオーダートラバーサル ツリーのノードをトラバースする方法です。ここでは、最初にルートノードをトラバースし、次に左の子、次に右の子をトラバースします。 私たちの問題を理解するために例を見てみましょう Preorder traversal : 1215149941171
-
C++のバイナリツリーでノードの後続を事前注文する
この問題では、二分木とノード値が与えられます。私たちのタスクは、ノードのプレオーダーサクセサを印刷することです。 二分木 は、各ルートノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。 プレオーダートラバーサル ツリーのノードをトラバースする方法です。ここでは、最初にルートノードをトラバースし、次に左の子、次に右の子をトラバースします。 後続ノードの事前注文 ノードのプレオーダートラバーサルでノードの隣に来るノードです。 問題を理解するために例を見てみましょう Input: 9 Output 0 Explanation: the preorder traver
-
C++のバイナリツリーでノードの先行ノードを事前注文する
この問題では、二分木とノード値が与えられます。私たちのタスクは、ノードのプレオーダーの先行を印刷することです。 二分木 は、各ルートノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。 プレオーダートラバーサル ツリーのノードをトラバースする方法です。ここでは、最初にルートノードをトラバースし、次に左の子、次に右の子をトラバースします。 先行ノードの事前注文 ノードのプレオーダートラバーサルでノードの前に来るノードです。 問題を理解するために例を見てみましょう Input: 1 Output: 9 この問題を解決するには、 navie アプローチは、二分木の
-
C++でのインオーダーおよびポストオーダートラバーサルからのプレオーダー
この問題では、二分木のインオーダートラバーサルとポストオーダートラバーサルが与えられます。私たちのタスクは、ツリーのポストオーダートラバーサルを印刷することです。 問題を理解するために例を見てみましょう Input:inorder: 16 7 21 12 1 5 9 postorder: 16 21 7 1 9 5 12 Output: preorder: 12 7 16 21 5 1 9 Explanation: the binary tree is : この問題を解決するための簡単な解決策は、指定されたトラバーサルを使用してツリーを作成し、ツリーのプレオーダートラバーサルを見つけ
-
C++でbよりも大きいプレフィックス
この問題では、strをn回追加することによって文字列が作成されるように、aとbおよび整数Nのみを含む文字列strが与えられます。私たちのタスクは、aの数がbの数よりも多い部分文字列の総数を出力することです。 問題を理解するために例を見てみましょう Input: aab 2 Output: 9 Explanation: created string is aabaab. Substrings with count(a) > count(b) : ‘a’ , ‘aa’, ‘aab’, ‘aaba&rsquo
-
C++でのプレフィックスからポストフィックスへの変換
この問題では、接頭辞式が与えられます。私たちのタスクは、指定された式の接尾辞変換を出力することです。 プレフィックス 式は、オペランドの前に演算子がある式です。 例:+AB。 接尾辞 式は、式のオペランドの後に演算子がある式です。 例:AB / 接頭辞から接尾辞への変換には、中置への変換は含まれません。 問題を理解するために例を見てみましょう Input: /+XY+NM Output: XY+NM+/ Explanation: infix -> (X+Y)/(N+M) この問題を解決するために、最初に後置式全体を逆の順序でトラバースします。そして、処理にスタックデータ構
-
C++でのプレフィックスからインフィックスへの変換
この問題では、接頭辞式が与えられます。私たちのタスクは、指定された式のインフィックス変換を出力することです。 プレフィックス式は、オペランドの前に演算子がある式です。 例:+AB。 中置式は、オペランド間に演算子がある式です。 例:A + B 中置式は人間が理解できる情報ですが、コンピューターは前置式または後置式(通常は後置)を計算します。 問題を理解するために例を見てみましょう Input: prefix : /+LM/NX Output: infix : (L+M) / (N/X) この問題を解決するために、スタックデータ構造を使用します。式の逆の順序でプレフィックス式をト
-
C ++での行列(または2D配列)のプレフィックス合計
この問題では、整数値mat[][]の2D配列が与えられます。私たちの仕事は、マットの接頭辞合計行列を印刷することです。 プレフィックス合計マトリックス: 行列のすべての要素は、その上下の合計要素です。つまり prefixSum[i][j] = mat[i][j] + mat[i-1][j]...mat[0][j] + mat[i][j-1] +... mat[i][0]. 問題を理解するために例を見てみましょう Input: arr =[ [4 6 1] [5 7 2]
-
C ++で数字を選択して、合計の絶対差に基づいてゲームの勝者を予測します
この問題では、n個の数の配列が与えられます。そして、XとYの2人のプレーヤーがいます。私たちのタスクは、ゲームの勝者を予測することです。 プレーヤーXが勝つには、XとYによる数値の合計の絶対差が4の倍数である必要があります。4で割り切れない場合は、Yが勝ちます。プレーヤーXがゲームを開始します。 問題を理解するために例を見てみましょう Input: a[] = {3 6 9 12} Output: X Explaination: X selects 3 and 6 Y selects 12 and 9 |3+6 - 12+9| = 12, 12 is a multiple of 4. こ
-
C++のコインゲームで勝者を予測する
このゲームには、XとYの2人のプレーヤーがいます。私たちのタスクは、両方が最適にプレイし、Xがゲームを開始した場合に誰がゲームに勝つかを予測することです。 ゲーム コインゲームでは、コインの数がNとMの2つの山があります。プレイヤーの1人がゲームの山のいずれかを選択します。次に、1人のプレーヤーが山をそれ以上分割できなくなるまで、山を2つに分割することがタスクです。 問題を理解するために例を見てみましょう Input: M = 2 , N = 2 Output:X 説明 -Xはゲームを開始し、Mパイル(両方とも同じ)を選択し、パイルを2つに分割します。これで、それぞれにコインが1つだ
-
C ++での浮動小数点数の精度(floor()、ceil()、trunc()、round()、setprecision())
浮動小数点数の精度 は、浮動小数点数が小数点以下の値を保持できる精度です。 たとえば、10/6 =1.6666666…これらには循環小数があり、格納するのに無限のメモリスペースを必要とする可能性があります。 したがって、このような場合のメモリオーバーフローを回避するために、コンパイラは数値に精度制限を設定します。 C ++のfloat値の場合、この精度は6〜7桁に設定されます。その後、小数が繰り返されると、値が破棄されます。 したがって、この破棄が行われるときに大きな損失を回避するために、精度が浮動小数点値であることをサポートするメソッドとライブラリがあります。ここでは、それらについて説
-
C++での時間計算量分析に関する実践的な質問
時間計算量 任意のアルゴリズムのは、アルゴリズムが完了するのにかかる時間です。アルゴリズムの効率を示し、比較分析を行うための重要な指標です。アルゴリズムの時間計算量を減らして、より効果的にする傾向があります。 例1 次のコードスニペットの時間計算量を見つけます for(i= 0 ; i < n; i++){ cout<< i << " " ; i++; } ループの最大値はnですが、forループではiが2回インクリメントされるため、時間が半分になります。したがって、時間計算量はO(n /
-
C++での文字列に関する練習用の質問
文字列はプログラミングの重要な部分です。文字列は文字タイプの配列です。 GATEのような競争試験でもそれは重要なトピックです。それでは、文字列に関するいくつかの重要なポイントについて説明してから、文字列に関する概念を明確にするのに役立ついくつかの質問に進みましょう。 プログラミング言語の文字列は、2つの異なる方法で保存できます。それらは文字配列(char str [size])を使用し、文字列を指すポインター(char * ch =“ Hello”)を使用しています。文字配列と文字列へのポインタの使用に関連するいくつかの重要なことがあります。彼らは 文字列のサイズを見つけるには、文字列の文