Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ นับจำนวนอักขระสุดท้ายมีหลังจากพิมพ์ n ตัวอักษรในตัวเขียนบ้าๆ


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n ตัว และมีค่าอื่นที่ c อยู่ที่นั่น มีโปรแกรมประมวลผลคำที่บ้าคลั่งอยู่ในระบบของเราซึ่งเราสามารถพิมพ์อักขระได้ แต่ถ้าเราไม่พิมพ์เป็นเวลา c วินาทีติดต่อกัน ตัวอักษรที่เขียนทั้งหมดจะถูกลบออก A[i] หมายถึงเวลาที่เราพิมพ์อักขระ ith เราต้องหาจำนวนอักขระสุดท้ายที่จะยังคงอยู่บนหน้าจอหลังจากพิมพ์อักขระทั้งหมด n ตัว

ดังนั้น หากอินพุตเป็น A =[1, 3, 8, 14, 19, 20]; c =5 จากนั้นผลลัพธ์จะเป็น 3 เพราะใน 8 วินาทีจะมี 3 คำบนหน้าจอ จากนั้น ทุกอย่างจะหายไปใน 13 วินาทีที่สอง ในวินาทีที่ 14 และ 19 มีการพิมพ์อักขระอีก 2 ตัว และสุดท้ายใน 20 ตัวที่สอง จะมีการพิมพ์อักขระอีก 1 ตัว และตัวอักษรทั้งหมด 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