세 개의 숫자 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