在C ++中找到信号到达字符串中所有位置所花费的时间

在本教程中,我们将讨论一个程序,以查找信号到达字符串中所有位置所花费的时间。

为此,我们将提供一个包含“ x”和“ o”的字符串。信号源自“ x”,并且在两个方向上传播,并在一个单位时间内改变一个“ o”值。我们的任务是计算将整个字符串转换为“ x”的完整时间。

示例

#include <bits/stdc++.h>

using namespace std;

//计算所需的总时间

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

以上是 在C ++中找到信号到达字符串中所有位置所花费的时间 的全部内容, 来源链接: utcz.com/z/327134.html

回到顶部