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

人がC++で最大1つとペアを形成できる場合のペアのカウント


私たちはN番号で与えられます。コーディングコンテストの参加者の数。目標は、いいえを見つけることです。人が多くても1人の他の人とペアリングできるときに可能なペアの数。したがって、ペアには最大2人の参加者がいます。参加者は一人で参加することもできます。

これは、pairs =

の繰り返しを使用して解決できます。
  • n=0または1の場合はcount=1(残り1人のみ)

  • 人が独身のままの場合nはn-1に減らされます

    • 残りのペアリングの残りの人の残り=n-2

      count =makePairs(p-1)+(p-1)* makePairs(p-2);

例を挙げて理解しましょう。

入力 −人=3

出力 −ペアを作る方法の数− 4

説明

If three persons are a,b,c then ways of pairing could be:
(a,b), (c) → c remained single
(a,c), (b) → b remained single
(b,c), (a) → a remained single
(a),(b),(c) → all remained single
Total ways = 4

入力 −人=2

出力 −ペアを作る方法の数− 2

説明

I persons are a,b then ways of pairing could be −
(a,b) → both paired
(a),(b) → both remained single
Total ways = 2

以下のプログラムで使用されているアプローチは次のとおりです

  • 参加者の数を格納するために整数の人を取ります。

  • 関数makePairs(int p)は必要ありません。入力としての人の数と、彼らが自分自身をペアにすることができる方法の数を返します。

  • 初期カウントを0とします。

  • p =0または1の場合、単一のままにする唯一の方法は1です。

  • それ以外の場合は、シングルのままにすることを選択できます。残りの(p-1)は、(p1)* makePairs(p-2)を使用してペアを検索します。

  • countの最終値はnoとして返されます。最後にペアリングする方法の例。

#include<iostream>
using namespace std;
int makePairs(int p){
   int count=0;
   // Base condition
   if (p==0 || p==1)
      { count=1; }
   else
      { count=makePairs(p-1) + (p-1)*makePairs(p-2); }
   return count;
}
int main(){
   int persons = 5;
   cout <<"Number of ways to make pair ( or remain single ):"<<makePairs(persons);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Number of ways to make pair ( or remain single ): 26

  1. C++で最も水が多いコンテナ

    コンテナの壁の高さの配列が与えられます。目標は、最大量の水を入れることができる容器を見つけることです。壁の高さは配列の要素であるため、壁の間の距離は2つの壁の間の幅と見なされます。たとえば、高さArr[i]とArr[j]の壁の間にj-i幅があります(0 <=i

  2. STLでペアを実装するC++プログラム

    ペアは、2つのデータオブジェクトで構成される単純なコンテナです: ‘first’ = The first element is referenced as ‘first’ ‘second’ = the second element and the order is fixed (first, second). ペアの割り当て、比較、コピーが可能です。タイプが異なる可能性のある2つの値を組み合わせるために使用されます。 構文は :ペア変数名(データ値1、データ値2)。 アルゴリズム Begin Write pair