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.