C++程序:计算疯狂作家输入n个字符后最终剩余的字符数


假设我们有一个包含n个元素的数组A,还有一个值c。系统中有一个疯狂的文字处理器,我们可以输入字符,但如果连续c秒没有输入,所有已写入的字母都将被删除。A[i]表示输入第i个字符的时间。我们必须找到输入所有n个字符后屏幕上将保留的最终字符数。

例如,如果输入为A = [1, 3, 8, 14, 19, 20];c = 5,则输出将为3,因为在第8秒时屏幕上将有3个字符。然后,在第13秒时所有内容都将消失。在第14秒和第19秒输入另外两个字符,最后在第20秒输入一个字符,屏幕上总共剩下3个字符。

步骤

为了解决这个问题,我们将遵循以下步骤:

s := 1
n := size of A
for initialize i := 1, when i < n, update (increase i by 1), do:
   if (A[i] - A[i - 1]) <= c, then:
      (increase s by 1)
   Otherwise
      s := 1
return s

示例

让我们看看下面的实现以更好地理解:

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A, int c) {
   int s = 1;
   int n = A.size();
   for (int i = 1; i < n; i++) {
      if ((A[i] - A[i - 1]) <= c) {
         s++;
      } else {
         s = 1;
      }
   }
   return s;
}
int main() {
   vector<int> A = { 1, 3, 8, 14, 19, 20 };
   int c = 5;
   cout << solve(A, c) << endl;
}

输入

{ 1, 3, 8, 14, 19, 20 }, 5

输出

3

更新于:2022年3月3日

94 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.