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

Tìm thời gian cần thiết để tín hiệu đến tất cả các vị trí trong một chuỗi trong C ++


Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm thời gian cần thiết để tín hiệu đến tất cả các vị trí trong một chuỗi

Đối với điều này, chúng tôi sẽ được cung cấp một chuỗi chứa ‘x’ và ‘o’. Một tín hiệu bắt nguồn từ ‘x’ và đi theo cả hai hướng thay đổi một giá trị ‘o’ trong một đơn vị thời gian. Nhiệm vụ của chúng tôi là tính toán thời gian hoàn thành để chuyển toàn bộ chuỗi thành ‘x’s.

Ví dụ

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

Đầu ra

2