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