Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมสูงสุดของเซิร์บซีเควลที่ไม่มีสามตัวติดกัน

ปัญหา

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อหาผลรวมสูงสุดของเซิร์บซีเควลที่ไม่มีสามตัวติดกัน

สำหรับนี้ เราจะได้รับชุดของจำนวนเต็มบวก งานของเราคือหาผลรวมสูงสุดโดยไม่เอาจำนวนเต็มบวกที่ติดกันสามตัวเข้าไปในค่าผลรวม

ตัวอย่างโค้ด

#include <bits/stdc++.h> 
using namespace std; 

//returning maximum subsequence without involving 
//three consecutive numbers 
int maxSumWO3Consec(int arr[], int n) { 
    int sum[n]; 
    if (n >= 1) sum[0] = arr[0]; 
    if (n >= 2) sum[1] = arr[0] + arr[1]; 
    if (n > 2) sum[2] = max(sum[1], max(arr[1] + arr[2], arr[0] + arr[2])); 
    for (int i = 3; i < n; i++) 
        sum[i] = max(max(sum[i - 1], sum[i - 2] + arr[i]), arr[i] + arr[i - 1] + sum[i - 3]); 
    return sum[n - 1]; 
} 

int main() { 
    int arr[] = { 100, 1000 }; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    cout << maxSumWO3Consec(arr, n); 
    return 0; 
}

เอาต์พุต

1100