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

ผลรวมสูงสุดขององค์ประกอบการสั่งซื้อที่เพิ่มขึ้นจาก n อาร์เรย์ใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาผลรวมสูงสุดขององค์ประกอบลำดับที่เพิ่มขึ้นจากอาร์เรย์ 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