From 76bf09026427c51cdd1c8c933b9bf6caac3113a4 Mon Sep 17 00:00:00 2001 From: Aditya Date: Thu, 23 Oct 2025 12:27:10 +0530 Subject: [PATCH] Added solution for Maximum Sum of Non-Adjacent Elements problem --- 9_Dynamic_programing/maxNonAdjacentSum.cpp | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 9_Dynamic_programing/maxNonAdjacentSum.cpp diff --git a/9_Dynamic_programing/maxNonAdjacentSum.cpp b/9_Dynamic_programing/maxNonAdjacentSum.cpp new file mode 100644 index 0000000..7df1858 --- /dev/null +++ b/9_Dynamic_programing/maxNonAdjacentSum.cpp @@ -0,0 +1,35 @@ +#include +using namespace std; + +// Function to find the maximum sum of non-adjacent elements +int maxNonAdjacentSum(vector& nums) { + int n = nums.size(); + + // Edge cases + if (n == 0) return 0; + if (n == 1) return nums[0]; + + // incl = max sum including current element + // excl = max sum excluding current element + int incl = nums[0]; + int excl = 0; + + for (int i = 1; i < n; i++) { + int new_excl = max(incl, excl); // maximum till previous element + incl = excl + nums[i]; // include current element + excl = new_excl; // update exclude + } + + // Final answer is the max of incl and excl + return max(incl, excl); +} + +int main() { + vector nums1 = {3, 2, 7, 10}; + vector nums2 = {3, 2, 5, 10, 7}; + + cout << "Example 1 Output: " << maxNonAdjacentSum(nums1) << endl; // 13 + cout << "Example 2 Output: " << maxNonAdjacentSum(nums2) << endl; // 15 + + return 0; +}