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

เพิ่มมูลค่าสูงสุดของ (arr[i] – i) – (arr[j] – j) ในอาร์เรย์ใน C++


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

จากอาร์เรย์ arr[] ค้นหาค่าสูงสุดของ (arr[i] – i) – (arr[j] – j) โดยที่ i ไม่เท่ากับ j โดยที่ i และ j แปรผันจาก 0 ถึง n-1 และ n คือขนาดของอาร์เรย์อินพุต arr[]

หากอาร์เรย์อินพุตคือ {7, 5, 10, 2, 3} เราก็จะได้ค่าสูงสุด 9 ค่าดังนี้−

(องค์ประกอบ 10 – ดัชนี 2) - (องค์ประกอบ 2 – ดัชนี 3) (10 – 2) – (2 – 3) =8 – (-1) =9

อัลกอริทึม

<ก่อน>1. ค้นหาค่าสูงสุดของ (arr[i] – i) ในอาร์เรย์ทั้งหมด2. ค้นหาค่าต่ำสุดของ (arr[i] – i) ในอาร์เรย์ทั้งหมด3. ส่งกลับค่าความแตกต่างของค่าที่สูงกว่าสองค่า

ตัวอย่าง

#include ใช้เนมสเปซ std;int getMaxDiff(int *arr, int n){ if (n <2) { cout <<"อินพุตไม่ถูกต้อง" < maxVal) { cout <<"Max =" <