C++で指定された値になるすべての一意のトリプレット
ここで、1つの興味深い問題が発生します。いくつかの要素を持つ配列があります。 1つの合計値が与えられます。私たちのタスクは、配列からトリプレットを見つけることであり、その合計は指定された合計と同じです。配列が{4、8、63、21、24、3、6、1、0}であり、合計値がS =18であると仮定します。したがって、トリプレットは{4、6、8}になります。複数のトリプレットが存在する場合は、それらすべてが表示されます。
アルゴリズム
getTriplets(arr、n、sum)-
トリプレットを格納するための1つの配列の定義を開始します。たとえば、trip_arrは、一意のトリプレットを格納するための1つのセットunique_tripを定義します。同じトリプレットはありません。 0からn-2の範囲でiのarrをソートし、j:-i + 1、およびk:=n – 1を実行します。while(j合計を減らします。 例
#include#include #include #include using namespace std; class triplet {public:int first、second、third; void display(){cout <<"(" < トリプレット; set uniqTriplets; //重複するトリプレット文字列temp_tripletを回避するためにsetを使用します;トリプレットnewTriplet; sort(arr、arr + n); //配列を並べ替えますfor(i =0; i sum)k--;そうでなければj++; }} if(triplets.size()==0)return 0; for(i =0; i 出力
(0、3、24)(0、6、21)(1、5、21)
-
C++で特定の二分木にあるすべての左葉の合計を求めます
この問題では、二分木が与えられます。私たちのタスクは、特定の二分木に残っているすべての葉の合計を見つけることです 。 問題を理解するために例を見てみましょう 入力: 出力:11 説明 − All leaf nodes of the tree are : 2, 9 Sum = 2 + 9 = 11 ソリューションアプローチ この問題の簡単な解決策は、ツリーをルートからリーフにトラバースすることです。ノードが左リーフノードの場合は、合計に追加します。ツリー全体がトラバースされるとき。合計を印刷します。 例 ソリューションの動作を説明するプログラム #include <i
-
合計がC++の指定された値xに等しい、ソートされた二重リンクリストのトリプレットをカウントします
整数値を含むソートされた二重リンクリストが与えられます。目標は、積が指定された値xに等しいトリプレットを見つけることです。入力リンクリストが3-4-1-2で、xが6の場合、カウントは1になります(トリプレット(3,1,2)) 例 入力 linked list: [ 3−4−13−5−10−10−0 ] x=20 出力 Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 2 説