C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でbよりも大きいプレフィックス


この問題では、strをn回追加することによって文字列が作成されるように、aとbおよび整数Nのみを含む文字列strが与えられます。私たちのタスクは、aの数がbの数よりも多い部分文字列の総数を出力することです。

問題を理解するために例を見てみましょう

Input: aab 2
Output: 9
Explanation: created string is aabaab.
Substrings with count(a) > count(b) : ‘a’ , ‘aa’, ‘aab’, ‘aaba’, ‘aabaa’, ‘aabaab’, ‘aba’, ‘baa’, ‘abaa’.

この問題を解決するには、文字列に必要なプレフィックスサブセットが含まれているかどうかを確認する必要があります。ここでは、フルバージョンではなく文字列strをチェックします。ここで、wはプレフィックスとaとbの出現回数に基づいて文字列をチェックします。

このプログラムは、私たちのソリューションの実装を示します

#include <iostream>
#include <string.h>
using namespace std;
int prefixCount(string str, int n){
   int a = 0, b = 0, count = 0;
   int i = 0;
   int len = str.size();
   for (i = 0; i < len; i++) {
      if (str[i] == 'a')
         a++;
      if (str[i] == 'b')
         b++;
      if (a > b) {
      count++;
   }
}
if (count == 0 || n == 1) {
   cout<<count;
   return 0;
}
if (count == len || a - b == 0) {
   cout<<(count*n);
   return 0;
}
int n2 = n - 1, count2 = 0;
while (n2 != 0) {
   for (i = 0; i < len; i++) {
      if (str[i] == 'a')
         a++;
      if (str[i] == 'b')
         b++;
      if (a > b)
      count2++;
   }
   count += count2;
   n2--;
   if (count2 == 0)
      break;
   if (count2 == len) {
      count += (n2 * count2);
      break;
   }
   count2 = 0;
   }
   return count;
}
int main() {
   string str = "aba";
   int N = 2;
   cout<<"The string created by using '"<<str<<"' "<<N<<" times has ";
   cout<<prefixCount(str, N)<<" substring with count of a greater than count of b";
   return 0;
}

出力

The string created by using 'aba' 2 times has 5 substring with count of a greater than count of b

  1. C++プログラムでカウントが0よりも1多い最大サブマトリックス領域

    この問題では、バイナリ数(0/1)で構成されるサイズnXnの2次元行列が与えられます。私たちのタスクは、カウントが0よりも1多い最大サブマトリックス領域を見つけるプログラムを作成することです。 問題を理解するために例を見てみましょう 入力 bin[N][N] = {    {0, 1, 0, 0},    {1, 1, 0, 0},    {1, 0, 1, 1},    {0, 1, 0, 1} } 出力 9 説明 submatrix : bin[1][0], bin[1][1], bin[1][2] bin

  2. C++でmが同一線上にある合計nポイントの三角形の数

    2D平面上の点の数を表す2つの変数nとmが与えられます。 n個のポイントのうち、m個のポイントは同一線上にあります。目標は、これらのn個の点を使用して形成できる三角形の数を見つけることです。 同一線上の点 −同じ線上にある点は同一線上にあると呼ばれます。ポイントAとBは同一線上にあります。 n =4(A、B、C、D)の場合、m =2(A、B) 三角形の数- 4から任意の3つのポイントを選択=4C 3 ただし、同一線上の点は三角形を形成できないため、上記でカウントされる可能性のある三角形を削除します=2C 3 三角形の合計=4C 3 --2C 3 =4-0 =4