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

C++에서 주어진 조합을 사용하여 문자열(R, G, B로 구성)의 개수를 센다.

<시간/>

세 개의 숫자 R, G, B와 문자 'R', 'G', 'B'만 주어집니다. 목표는 최소 R R, 최소 G G 및 최소 B B를 사용하여 만들 수 있는 가능한 문자열의 수를 찾는 것입니다. 숫자 R, G 및 B의 합은 가능한 문자열 길이보다 작거나 같습니다.

예를 들어

입력

R = 1, G = 1, B = 1 length=3

출력

Count of number of strings (made of R, G and B) using given combination are −
6

설명

The possible strings will be :
“RGB”, “RBG”, “BRG”, “BGR”, “GRB”, “GBR”. That is permutations of RGB.

입력

R = 2, G = 0, B = 2 length=4

출력

Count of number of strings (made of R, G and B) using given combination are −
6

설명

The possible strings will be :
“RRBB”, “BBRR”, “RBRB”, “BRBR”, “RBBR”, “BRRB”.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -

이 접근법에서 우리는 먼저 R, B 및 G에 대한 문자를 여러 번 취합니다. 이제 남은 길이를 확인하십시오 - (R+G+B) 문자는 모든 순열과 조합을 만들고 개수에 추가합니다.

  • 정수 값 R, G, B를 입력으로 사용합니다.

  • 크기를 만들 문자열의 길이로 가져옵니다.

  • 함수 조합(int R, int G, int B, int size)은 모든 입력을 받아 주어진 조합을 사용하여 문자열(R, G, B로 구성)의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 남은 개수를 temp=size − (R + G + B)로 취합니다.

  • 순열 값을 사용하려면 길이가 size+1인 배열 arr를 사용하세요.

  • 처음에 i의 계승을 arr[i]에 저장합니다. i=0에서 i=size까지 for 루프를 사용합니다. Setarr[i]=arr[i−1]*i.

  • 조합 계산을 위해 두 개의 for 루프를 사용하여 다시 arr[]을 트래버스합니다.

  • i=0에서 temp, j=0에서 temp−i에 대해 temp_2 =temp - (i + j)를 계산합니다.

  • temp_3 =arr[i + R] * arr[j + B] * arr[temp_2 + G]를 취합니다.

  • 이제 count에 arr[size] / temp_3을 추가합니다.

  • 모든 for 루프가 끝나면 필요한 문자열 수로 계산됩니다.

  • 결과로 카운트를 반환합니다.

예시

#include<bits/stdc++.h>
using namespace std;
int combination(int R, int G, int B, int size){
   int count = 0;
   int temp = size − (R + G + B);
   int arr[size+1];
   arr[0] = 1;
   for (int i = 1; i <= size; i++){
      arr[i] = arr[i − 1] * i;
   }
   for (int i = 0; i <= temp; i++){
      for (int j = 0; j <= temp−i; j++){
         int temp_2 = temp − (i + j);
         int temp_3 = arr[i + R] * arr[j + B] * arr[temp_2 + G];
         count += arr[size] / temp_3;
      }
   }
   return count;
}
int main(){
   int R = 2, G = 1, B = 1;
   int size = 4;
   cout<<"Count of number of strings (made of R, G and B) using given combination are:
   "<<combination(R, G, B, size);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of number of strings (made of R, G and B) using given combination are: 12