Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số chuỗi (được tạo bởi R, G và B) bằng cách sử dụng kết hợp đã cho trong C ++

Cho ba số R, G và B và chỉ các chữ cái ‘R’, ‘G’ và ‘B’. Mục đích là tìm số lượng các chuỗi có thể được tạo ra bằng cách sử dụng ít nhất R Rs, ít nhất G Gs và ít nhất B Bs trong đó. Các số R, G và B có tổng nhỏ hơn hoặc bằng độ dài của chuỗi có thể.

Ví dụ

Đầu vào

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

Đầu ra

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

Giải thích

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

Đầu vào

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

Đầu ra

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

Giải thích

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

Trong cách tiếp cận này, đầu tiên chúng ta sẽ lấy các chữ cái cho R, B và G số lần. Bây giờ, hãy kiểm tra độ dài còn lại - các chữ cái (R + G + B) thực hiện tất cả các hoán vị và kết hợp và thêm vào để đếm.

  • Lấy các giá trị nguyên R, G, B làm đầu vào.

  • Lấy kích thước bằng chiều dài của chuỗi được tạo.

  • Tổ hợp hàm (int R, int G, int B, int size) nhận tất cả các đầu vào và trả về số lượng chuỗi (được tạo bởi R, G và B) bằng cách sử dụng một tổ hợp nhất định.

  • Lấy số lượng ban đầu là 0.

  • Lấy số lượng còn lại là temp =size - (R + G + B).

  • Lấy một arr mảng có kích thước chiều dài + 1 để nhận các giá trị của các hoán vị.

  • Ban đầu lưu trữ các thừa số của i trong arr [i]. Sử dụng vòng lặp for từ i =0 đến i =size. Setarr [i] =arr [i − 1] * i.

  • Để tính toán các kết hợp đi qua arr [] một lần nữa bằng cách sử dụng hai vòng lặp for.

  • Đối với i =0 đến nhiệt độ và j =0 đến nhiệt độ-i, tính toán temp_2 =temp - (i + j).

  • Lấy temp_3 =arr [i + R] * arr [j + B] * arr [temp_2 + G].

  • Bây giờ, hãy thêm arr [size] / temp_3 để đếm.

  • Vào cuối tất cả các vòng lặp for, chúng tôi sẽ tính là số lượng chuỗi bắt buộc có thể.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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