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

โปรแกรม C++ เพื่อค้นหาชุดชิ้นส่วนที่ได้รับการจัดอันดับสูงสุด


สมมติว่ามีผู้ผลิตที่ผลิตชิ้นส่วนเฉพาะสำหรับผลิตภัณฑ์เฉพาะ ผู้ผลิตมีชิ้นส่วนที่แตกต่างกัน n แบบ และชิ้นส่วนมีการจัดอันดับเฉพาะตามเกณฑ์สามประการ การให้คะแนนของผลิตภัณฑ์ n รายการจะได้รับใน 'การให้คะแนน' ของอาร์เรย์ โดยที่แต่ละองค์ประกอบอยู่ในรูปแบบ (A, B, C) โดยที่ A, B และ C เป็นเกณฑ์การให้คะแนนที่แตกต่างกันของผลิตภัณฑ์ ตอนนี้ OEM ต้องการซื้อชิ้นส่วน m สำหรับแต่ละผลิตภัณฑ์ที่พวกเขาผลิตจากผู้ผลิตชิ้นส่วน OEM จะเลือกชิ้นส่วนที่ตรงตามเงื่อนไขด้านล่าง -

  • ไม่ควรซื้อชิ้นส่วนเดียวกันตั้งแต่ 2 ชิ้นขึ้นไป

  • เลือกชุดของชิ้นส่วนที่ต้องการให้ค่า V ขยายใหญ่สุด โดยที่ V =|คะแนนรวมของเกณฑ์ A| + |คะแนนรวมของเกณฑ์ B| + |คะแนนรวมของเกณฑ์ C|.

เราต้องหาค่า V สูงสุดที่เป็นไปได้จากชิ้นส่วนที่ OEM เลือก

ดังนั้น หากอินพุตเป็น n =6, m =4, การให้คะแนน ={{2, 3, 5}, {3, 5, 2}, {4, 8, 5}, {1, 5, 3}, {7, 2, 7}, {4, 3, 6}} แล้วผลลัพธ์จะเป็น 56

หาก OEM เลือกส่วนที่ 1, 3, 5 และ 6 คะแนนรวมสำหรับแต่ละหมวดหมู่จะเป็น −

Category A =2 + 4 + 7 + 4 =17Category B =3 + 8 + 2 + 3 =16.Category C =5 + 5 + 7 + 6 =23 มูลค่ารวมของ V คือ 17 + 16 + 23 =56.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

N :=100Define an array arr of size:9 x N.Define an array ans.for initialize i :=0 when i  

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include using namespace std;const int INF =1e9;const int modval =(int) 1e9 + 7;#define N 100int แก้ (int n, int m, vector> การจัดอันดับ) { int V, arr[9][N]; vector ans; สำหรับ (int i =0; i > การให้คะแนน ={{2, 3, 5}, {3, 5, 2}, {4, 8, 5}, {1, 5, 3}, {7, 2 , 7}, {4, 3, 6}}; ศาล<<แก้ (n, m, การให้คะแนน); คืนค่า 0;}

อินพุต

<ก่อนหน้า>6, 4, {{2, 3, 5}, {3, 5, 2}, {4, 8, 5}, {1, 5, 3}, {7, 2, 7}, {4 , 3,6}}

ผลลัพธ์

56