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

友達ペアリングの問題


グループには、n人の友達がいます。一人一人が独身のままでいることも、他の友達とペアになることもできます。友達が独身のままでいることも、ペアになることもできる方法の総数を見つけましょう。

1つのペアに2人の友人のpとqがある場合、(p、q)または(q、p)は同じです。

n人の友人のグループの場合、f(n)を、ペアにする方法または単一のままにする方法の数とします。次に、n番目の人が独身のままであるか、ペアになっています。 n人目が独身の場合、(n-1)人の友達を繰り返します。 n番目の人が残りの(n-1)人のいずれかとペアになっている場合、(n-1)* f(n-2)を繰り返します。

入力と出力

Input:
The number of friends. Say 5.
Output:
The possible way to pair them. Here the answer is 26.

アルゴリズム

countPairs(n)

入力: 友達の数。

出力 :n人の友達をペアリングする方法の数。

Begin
   define pair array of size n + 1
   pair[0] := 0, pair[1] := 1 and pair[2] := 2

   for i in range 3 to n, do
      pair[i] := pair[i-1] + (i+1)*pairs[i-2]
   done

   pair[n]
End

#include <iostream>
using namespace std;

int countPairs(int n) {
   int pairs[n + 1];             //number of pairs for ith number

   //for number 0 to 2, there are 0 to 2 possible combination
   pairs[0] = 0;
   pairs[1] = 1;
   pairs[2] = 2;

   for (int i = 3; i <= n; i++)             //fill array for 3 to n numbers
      pairs[i] = pairs[i-1] + (i-1) * pairs[i-2];

   return pairs[n];
}

int main() {
   int n;
   cout << "Enter numbers: "; cin >> n;
   cout << "Number of ways to pair "<<n<<" friends: " << countPairs(n);
}

出力

Enter numbers: 5
Number of ways to pair 5 friends: 26

  1. ペアリングヒープのバリエーション

    ペアリングヒープは、空のヒープ、またはルート要素とペアリングツリーの空のリストを含むペアリングツリーのいずれかです。 ヒープ順序プロパティでは、ノードの親がノード自体より大きくないことが必要です。 次の説明では、キーの減少操作をサポートしない純粋関数型ヒープについて検討します。 タイプPairingTree[Element]=Heap(element:Element、subheaps:List [PairingTree [Element]]) タイプPairingHeap[Element]=Empty | PairingTree [Element] ペアリングヒープには、最小ペアリ

  2. 停止ステーション問題の数のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − AとBの2つの場所の間に13の中間駅があるとされています。連続する駅がないように、2つの中間駅で列車を停止できる方法の数を見つける必要がありますか? 次に、以下の実装のソリューションを見てみましょう- 例 # stop station def stopping_station( p, n):    num = 1    dem = 1    s = p    # selecting specified position &n