สมมติว่าเรามีแบตเตอรี่ n ก้อนที่สามารถใช้งานได้สูงสุด 5 ครั้ง เรามีอุปกรณ์บางอย่างที่ต้องใช้แบตเตอรี่สามก้อน และการใช้งานอุปกรณ์แต่ละครั้งจะเพิ่มจำนวนการใช้งานของแบตเตอรี่ขึ้น 1 หากเราต้องใช้อุปกรณ์ k ครั้ง เราต้องหาว่าเราสามารถผสมแบตเตอรี่ได้กี่ชุดเพื่อให้พลังงานแก่อุปกรณ์ ไม่สามารถใช้แบตเตอรี่ในอุปกรณ์สองเครื่องพร้อมกันและไม่สามารถรวมแบตเตอรี่ที่ใช้แล้ว 5 ครั้งได้ จำนวนการใช้งานของแบตเตอรี่จะแสดงเป็นแบตเตอรีอาร์เรย์
ดังนั้น หากอินพุตเป็น n =6, k =2, batt ={2, 4, 4, 2, 1, 3} ผลลัพธ์จะเป็น 1
ใช้แบตเตอรี่ร่วมกันได้เพียงชุดเดียวสำหรับอุปกรณ์จ่ายไฟเป็นเวลา k ครั้ง
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
ans := 0 for initialize i := 0, when i < n, update (increase i by 1), do: if batt[i] + k <= 5, then: (increase ans by 1) return 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