มาดูขั้นตอนในการจบโปรแกรมกัน
- เริ่มต้นอาร์เรย์
- เริ่มต้นอาร์เรย์ max_sum ของขนาด n.
- ค้นหาผลรวมสูงสุดของทุกดัชนีและเก็บไว้ในอาร์เรย์ max_sum
- คำนวณผลรวมขององค์ประกอบทั้งหมดและเก็บไว้ในผลรวมตัวแปร
- เขียนลูปที่วนซ้ำจาก i =k ถึง n.
- เพิ่ม a[i] - a[i - k] ให้กับผลรวม
- อัปเดตผลลัพธ์ด้วยผลลัพธ์สูงสุด ผลรวม
- อัปเดตผลลัพธ์ด้วยผลลัพธ์สูงสุด sum + max_sum[i - k].
ตัวอย่าง
มาดูโค้ดกันเลย
#include<bits/stdc++.h> using namespace std; int getMaxSum(int a[], int n, int k) { int maxSum[n]; maxSum[0] = a[0]; int currentMax = a[0]; for (int i = 1; i < n; i++) { currentMax = max(a[i], currentMax+a[i]); maxSum[i] = currentMax; } int sum = 0; for (int i = 0; i < k; i++) { sum += a[i]; } int result = sum; for (int i = k; i < n; i++) { sum += a[i] - a[i-k]; result = max(result, sum); result = max(result, sum + maxSum[i-k]); } return result; } int main() { int a[] = {5, 3, 7, -5, 6, 2, 1}; int k = 6; cout << getMaxSum(a, 7, k) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
19
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น