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

신호가 C++에서 문자열의 모든 위치에 도달하는 데 걸리는 시간 찾기


이 튜토리얼에서는 신호가 문자열의 모든 위치에 도달하는 데 걸리는 시간을 찾는 프로그램에 대해 설명합니다.

이를 위해 'x'와 'o'를 포함하는 문자열이 제공됩니다. 신호는 'x'에서 시작하여 1개의 단위 시간에 1개의 'o' 값을 변경하면서 양방향으로 이동합니다. 우리의 임무는 전체 문자열을 'x'로 변환하는 전체 시간을 계산하는 것입니다.

예시

#include <bits/stdc++.h>
using namespace std;
//calculating the total required time
int findMaximumDuration(string s, int n) {
   int right = 0, left = 0;
   int count = 0, maximumLength = INT_MIN;
   s = s + '1';
   for (int i = 0; i <= n; i++) {
      if (s[i] == 'o')
         count++;
      else {
         if (count > maximumLength) {
            right = 0;
            left = 0;
            if (s[i] == 'x')
               right = 1;
            if (((i - count) > 0) && (s[i - count - 1] == 'x'))
               left = 1;
            count = ceil((double)count / (right + left));
            maximumLength = max(maximumLength, count);
         }
         count = 0;
      }
   }
   return maximumLength;
}
int main() {
   string str = "xooxoooxxoooxoooxooxooox";
   int length = str.size();
   cout << findMaximumDuration(str, length);
   return 0;
}

출력

2