이것은 집합의 부분 집합을 생성하기 위해 이진 계산 방법을 구현하는 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 }