สมมติว่าเรามีอาร์เรย์ 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