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

เพิ่มผลกำไรสูงสุดด้วยการขายผลิตภัณฑ์ M สูงสุดใน C++


ภารกิจคือการคำนวณกำไรสูงสุดที่สามารถทำได้โดยการขายผลิตภัณฑ์ให้มากที่สุด 'M'

จำนวนผลิตภัณฑ์ทั้งหมดคือ 'N' และราคาต้นทุนและราคาขายของแต่ละผลิตภัณฑ์จะแสดงในรายการ CP[] และ SP[] ตามลำดับ

ป้อนข้อมูล

N=6, M=4
CP[]={1,9,5,8,2,11}
SP[]={1,15,10,16,5,20}

ผลผลิต

28

คำอธิบาย − กำไรที่ได้จากการขายผลิตภัณฑ์ทั้งหมดเท่ากับ 0,6,5,8,3,9 ตามลำดับ

ดังนั้นการจะทำกำไรสูงสุดจากการขายสินค้าเพียง 4 รายการ ต้องเลือกผลิตภัณฑ์ที่มีกำไรสูงสุด กล่าวคือ หมายเลขผลิตภัณฑ์ 2,3,4 และ 6

กำไรสูงสุด=6+5+8+9=28

ป้อนข้อมูล

N=3, M=2
CP[]={10,20,30}
SP[]={19,22,38}

ผลผลิต

17

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • สร้างอาร์เรย์ Profit[] ของประเภท int และขนาด 'N' เพื่อจัดเก็บกำไรที่ได้รับจากแต่ละผลิตภัณฑ์

  • สร้างตัวแปร Total of type int เพื่อเก็บผลกำไรสูงสุดขั้นสุดท้าย

  • วนซ้ำจาก i=0 ถึง i

  • ขณะที่อยู่ในลูป ให้ตั้งค่า Profit[i] =Sp[i] – Cp[i]

  • เรียกใช้ฟังก์ชัน sort(Profit, Profit + N, มากกว่า() ); เพื่อจัดเรียง Profit[] array ใน descendingarray

  • วนซ้ำอีกครั้งจาก i=0 ถึง i

  • ขณะที่อยู่ในลูป ให้ตั้งค่าเงื่อนไข if ถ้า(Profit[i]>0) เพื่อตรวจสอบว่าค่าเป็นบวกหรือไม่ และถ้าเป็นเช่นนั้น ให้ตั้งค่า Total+=Profit[i];

  • ผลตอบแทนรวม;

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//Function to find profit
int MaxProfit(int N, int M, int Cp[], int Sp[]){
   int Profit[N];
   int total = 0;
   //Calculating profit from each product
   for (int i = 0; i < N; i++)
      Profit[i] = Sp[i] - Cp[i];
   //Arranging profit array in descending order
   sort(Profit, Profit + N, greater<int>());
   //Adding the best M number of profits
   for (int i = 0; i < M; i++){
      if (Profit[i] > 0)
         total += Profit[i];
      else
         break;
   }
   return total;
}
//Main function
int main(){
   int MP;
   int N=6,M=4;
   int CP[] = { 1, 9, 5, 8, 2, 11 };
   int SP[] = { 1, 15, 10, 16, 5, 20 };
   MP = MaxProfit(N, M, CP, SP);
   cout<<”Maximum Profit:”<<MP;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

Maximum Profit: 28