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

เพิ่มผลรวมอาร์เรย์สูงสุดหลังจากการปฏิเสธ K ใน C ++


คำชี้แจงปัญหา

กำหนดอาร์เรย์ขนาด n และจำนวน k เราต้องแก้ไขอาร์เรย์ k จำนวนครั้ง

การปรับเปลี่ยนอาร์เรย์หมายถึงในแต่ละการดำเนินการเราสามารถแทนที่องค์ประกอบอาร์เรย์ arr[i] ได้ด้วยการปฏิเสธเช่น arr[i] =-arr[i] ภารกิจคือการดำเนินการนี้ในลักษณะที่หลังจากการดำเนินการ k ผลรวมของอาร์เรย์จะต้องสูงสุด

หากอินพุต arr[] ={7, -3, 5, 4, -1} ผลรวมสูงสุดจะเท่ากับ 20

  • การปฏิเสธครั้งแรก -3. ตอนนี้อาร์เรย์กลายเป็น {7, 3, 5, 4, -1}
  • ปฏิเสธ -1. ตอนนี้อาร์เรย์กลายเป็น {7, 3, 5, 4, 1}

อัลกอริทึม

<ก่อน>1. แทนที่องค์ประกอบขั้นต่ำ arr[i] ในอาร์เรย์โดย -arr[i] สำหรับการดำเนินการปัจจุบัน2 เมื่อองค์ประกอบขั้นต่ำกลายเป็น 0 เราไม่ต้องทำการเปลี่ยนแปลงใดๆ อีก ด้วยวิธีนี้ เราสามารถสร้างผลรวมของอาร์เรย์สูงสุดหลังจากการดำเนินการ K

ตัวอย่าง

#include ใช้เนมสเปซ std;int getMaxSum(int *arr, int n, int k){ สำหรับ (int i =1; i <=k; ++i) { int minValue =INT_MAX; ดัชนี int =-1; สำหรับ (int j =0; j