สมมติว่าเรามีแบตเตอรี่ n ก้อน ใช้ได้สูงสุด 5 ครั้ง มีอุปกรณ์ที่ต้องใช้แบตเตอรี่ 3 ก้อน และการใช้งานแต่ละครั้งเพิ่มจำนวนการใช้ของแบตเตอรี่ขึ้น 1 หากเราต้องใช้งานอุปกรณ์ k ครั้ง เราต้องหาว่าสามารถจัดชุดแบตเตอรี่ได้กี่ชุด แบตเตอรี่ไม่สามารถใช้ในสองอุปกรณ์พร้อมกัน และแบตเตอรี่ที่ใช้ครบ 5 ครั้งแล้วไม่สามารถนำไปใช้ได้ จำนวนครั้งที่ใช้แล้วของแบตเตอรี่แต่ละก้อนกำหนดในอาร์เรย์ batt
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 6, k = 2, batt = {2, 4, 4, 2, 1, 3} ผลลัพธ์จะได้ 1
สามารถจัดชุดแบตเตอรี่ได้เพียง 1 ชุดเท่านั้นสำหรับการใช้งาน k ครั้ง
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
ans := 0 สำหรับ i := 0 เมื่อ i < n เพิ่ม i ทีละ 1 ทำ: ถ้า batt[i] + k <= 5 แล้ว: (เพิ่ม ans ขึ้น 1) คืนค่า ans / 3
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; #define N 100 int solve(int n, int k, int batt[]) { int ans = 0; for(int i = 0; i < n; i++){ if(batt[i] + k <= 5) ans++; } return ans / 3; } int main() { int n = 6, k = 2, batt[] = {2, 4, 4, 2, 1, 3}; cout<< solve(n, k, batt); return 0; }
ข้อมูลนำเข้า
6, 2, {2, 4, 4, 2, 1, 3}
ข้อมูลส่งออก
1