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

C++で要素のすべての組み合わせを出力します


この問題では、番号nが与えられます。私たちの仕事は、nの因数のすべての組み合わせを印刷することです。

トピックをよりよく理解するために例を見てみましょう-

Input: 24
Output:
2 2 2 3
2 4 3
8 3
4 6
2 12

このために、数の要素の組み合わせを見つける再帰関数を使用します。そして、すべての組み合わせを配列の配列に格納します。

このコードは、ソリューションの実装を示しています。

#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> factor_Combo;
void genreateFactorCombinations(int first, int eachFactor, int n, vector<int>factor) {
   if (first>n || eachFactor>n)
      return;
   if (eachFactor == n){
      factor_Combo.push_back(factor);
      return;
   }
   for (int i = first; i < n; i++) {
      if (i*eachFactor>n)
      break;
      if (n % i == 0){
         factor.push_back(i);
         genreateFactorCombinations(i, i*eachFactor, n, factor);
         factor.pop_back();
      }
   }
}
void printcombination() {
   for (int i = 0; i < factor_Combo.size(); i++){
      for (int j = 0; j < factor_Combo[i].size(); j++)
         cout<<factor_Combo[i][j]<<"\t";
      cout<<endl;
   }
}
int main() {
   int n = 24;
   vector<int>single_result_list;
   cout<<"All Factor combinations of "<<n<<" are :\n";
   genreateFactorCombinations(2, 1, n, single_result_list);
   printcombination();
   return 0;
}
出力
All Factor combinations of 24 are −
2 2 2 3
2 2 6
2 3 4
2 12
3 8
4 6

  1. すべてのサイクルをC++の無向グラフに出力します

    この問題では、無向グラフが与えられ、グラフに形成されるすべてのサイクルを印刷する必要があります。 無向グラフ 互いに接続されたグラフです。一方向グラフのすべてのエッジは双方向です。無向ネットワークとも呼ばれます。 サイクル グラフのデータ構造は、すべての頂点がサイクルを形成するグラフです。 問題をよりよく理解するための例を見てみましょう- グラフ- 出力- Cycle 1: 2 3 4 5 Cycle 2: 6 7 8 このために、グラフのいくつかのプロパティを利用します。グラフ彩色法を使用して、閉路グラフで発生するすべての頂点に色を付ける必要があります。また、頂点

  2. C++での組み合わせ

    2つの整数nとkがあるとします。 1...nからk個の可能なすべての組み合わせを見つける必要があります。したがって、n=4およびk=2の場合、組み合わせは[[1,2]、[1,3]、[1,4]、[2,3]、[2,4]、[3,4 ]] これを解決するには、次の手順に従います- これを解決するために再帰関数を使用します。関数solve()は、n、k、一時配列を取得して開始します。開始は最初は1です。これは次のように動作します temp配列のサイズ=kの場合、tempをres配列に挿入し、戻ります for i:=start to n、 iを一時的に挿入 solve(n、k、temp、i + 1