ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาผลรวมสูงสุดขององค์ประกอบลำดับที่เพิ่มขึ้นจากอาร์เรย์ n ตัว
สำหรับสิ่งนี้เราจะมีอาร์เรย์ N ขนาด M งานของเราคือการหาผลรวมสูงสุดโดยการเลือกหนึ่งองค์ประกอบจากแต่ละอาร์เรย์เพื่อให้องค์ประกอบจากอาร์เรย์ก่อนหน้ามีขนาดเล็กกว่าองค์ประกอบถัดไป
ตัวอย่าง
#include <bits/stdc++.h> #define M 4 using namespace std; //calculating maximum sum by selecting //one element int maximumSum(int a[][M], int n) { for (int i = 0; i < n; i++) sort(a[i], a[i] + M); int sum = a[n - 1][M - 1]; int prev = a[n - 1][M - 1]; int i, j; for (i = n - 2; i >= 0; i--) { for (j = M - 1; j >= 0; j--) { if (a[i][j] < prev) { prev = a[i][j]; sum += prev; break; } } if (j == -1) return 0; } return sum; } int main() { int arr[][M] = { {1, 7, 3, 4}, {4, 2, 5, 1}, {9, 5, 1, 8} }; int n = sizeof(arr) / sizeof(arr[0]); cout << maximumSum(arr, n); return 0; }
ผลลัพธ์
18