Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

집합의 부분 집합을 생성하기 위해 이진 계산 방법을 구현하는 C++ 프로그램

<시간/>

이것은 집합의 부분 집합을 생성하기 위해 이진 계산 방법을 구현하는 C++ 프로그램입니다.

알고리즘

Begin
   Take the array elements as input.
   function BinaryCounting():
      Calculate subset by r = pow(2, n) // here n = number of elements.
      Generate binary numbers from 0 to r-1.
      Call solution() for each binary string of n character.
End

예시

#include<iostream>
#include<math.h>
using namespace std;
void solution(char code[], int a[], int n) //print the solution
{
   int i;
   cout<<"\t { ";
      for(i = 0; i < n; i++) {
         if(code[i] == '1')
            cout<<a[i]<<" ";
      }
   cout<<"}\n";
}
int BinaryCounting(int a[], int n) {
   int r, i, l;
   char bin[] = "00000";
   r = pow(2, n);
   //Generate binary numbers from 0 to r-1.
   for(i = 0; i < r; i++) {
      solution(bin, a, n);
      l=n-1;
      h:
      if(bin[l] == '0')
         bin[l] = '1';
      else {
         bin[l] = '0';
         l--;
         goto h;
      }
   }
}
int main() {
   int i, n;
   cout<<"\nEnter the number of elements: ";
   cin>>n;
   int a[n];
   cout<<"\n";
   for(i = 0; i < n; i++) {
      cout<<"Enter "<<i+1<<" element: ";
      cin>>a[i];
   }
   cout<<"\nThe subset in the binary counting method: \n";
   BinaryCounting(a, n);
   return 0;
}

출력

Enter the number of elements: 4
Enter 1 element: 4
Enter 2 element: 3
Enter 3 element: 2
Enter 4 element: 1
The subset in the binary counting method:
{ }
{ 1 }
{ 2 }
{ 2 1 }
{ 3 }
{ 3 1 }
{ 3 2 }
{ 3 2 1 }
{ 4 }
{ 4 1 }
{ 4 2 }
{ 4 2 1 }
{ 4 3 }
{ 4 3 1 }
{ 4 3 2 }
{ 4 3 2 1 }