C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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)

  1. C++で特定の二分木にあるすべての左葉の合計を求めます

    この問題では、二分木が与えられます。私たちのタスクは、特定の二分木に残っているすべての葉の合計を見つけることです 。 問題を理解するために例を見てみましょう 入力: 出力:11 説明 − All leaf nodes of the tree are : 2, 9 Sum = 2 + 9 = 11 ソリューションアプローチ この問題の簡単な解決策は、ツリーをルートからリーフにトラバースすることです。ノードが左リーフノードの場合は、合計に追加します。ツリー全体がトラバースされるとき。合計を印刷します。 例 ソリューションの動作を説明するプログラム #include <i

  2. 合計が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 説