เราได้รับอาร์เรย์ของจำนวนเต็ม ภารกิจคือการคำนวณความแตกต่างสัมบูรณ์สูงสุดของมูลค่าและผลรวมของดัชนี นั่นคือสำหรับดัชนีแต่ละคู่ (i,j) ในอาร์เรย์ เราต้องคำนวณ | Arr[i] - A[j] | + |i-j| และหาผลรวมดังกล่าวให้ได้มากที่สุด ที่นี่ |A| หมายถึงค่าสัมบูรณ์ของ A หากอาร์เรย์มี 4 องค์ประกอบ ดัชนีจะเป็น 0,1,2,3 และคู่ที่ไม่ซ้ำจะเป็น ( (0,0), (1,1), (2,2), (3,3) , (0,1), (0,2), (0,3), (1,2), (1,3), (2,3) )
ป้อนข้อมูล − Arr[] ={ 1,2,4,5 }
ผลผลิต − ผลต่างสัมบูรณ์สูงสุดของมูลค่าและผลรวมดัชนี − 7
คำอธิบาย − คู่ดัชนีและ | A[i]-A[j] | + | ไอ-เจ | มีดังนี้
<ก่อน>1. (0,0), (1,1), (2,2), (3,3)--------- |i-j| สำหรับแต่ละอันคือ 0.2 (0,1)---------- |1-2| + |0-1|=1+1 =23. (0,2)---------- |1-4| + |0-2|=3+2 =54. (0,3)---------- |1-5| + |0-3|=4+3 =75. (1,2)---------- |2-4| + |1-2|=2+1 =36. (1,3)---------- |2-5| + |1-3|=3+2 =57. (2,3)---------- |4-5| + |2-3|=1+1 =2มูลค่าสูงสุดของผลรวมดังกล่าวคือ 7.ป้อนข้อมูล − Arr[] ={ 10,20,21 }
ผลผลิต − ผลต่างสัมบูรณ์สูงสุดของมูลค่าและผลรวมดัชนี − 13
คำอธิบาย − คู่ดัชนีและ | A[i]-A[j] | + | ไอ-เจ | มีดังนี้
<ก่อน>1. (0,0), (1,1), (2,2)--------- |i-j| สำหรับแต่ละอันคือ 0.2 (0,1)---------- |10-20| + |0-1|=10+1 =113. (0,2)---------- |10-21| + |0-2|=11+2 =134. (1,2)---------- |20-21| + |1-2|=1+1 =2มูลค่าสูงสุดของผลรวมดังกล่าวคือ 13แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็มที่มีตัวเลขเป็น Arr[]
-
ฟังก์ชัน maxabsDiff( int arr[],int n) ใช้เพื่อคำนวณความแตกต่างสัมบูรณ์สูงสุดของค่าและผลรวมดัชนี..
-
เราเริ่มต้นผลลัพธ์ของตัวแปรด้วย -1
-
ภายใน for วนรอบอาร์เรย์ของจำนวนเต็มตั้งแต่ต้น
-
ในการซ้อนเพื่อวนซ้ำองค์ประกอบที่เหลือและคำนวณผลรวมสัมบูรณ์ของค่าองค์ประกอบและดัชนี i,j (abs(arr[i] - arr[j]) + abs(i - j)) และเก็บไว้ในตัวแปรว่า absDiff
-
หากผลรวมที่คำนวณใหม่นี้มากกว่าจำนวนก่อนหน้า ให้เก็บไว้ใน 'ผลลัพธ์'
-
ส่งกลับผลลัพธ์หลังจากสำรวจทั้งอาร์เรย์
ตัวอย่าง
#include#include // ฟังก์ชันเพื่อคืนค่าส่วนต่างสัมบูรณ์สูงสุด maxabsDiff(int arr[], int n){ int result =0; สำหรับ (int i =0; i ผล) ผล =absDiff; } } ส่งคืนผลลัพธ์;}int main(){ int Arr[] ={1,2,4,1,3,4,2,5,6,5}; printf("ค่าความแตกต่างสัมบูรณ์สูงสุดของค่าและผลรวมดัชนี:%d", maxabsDiff(Arr,10)); คืนค่า 0;}
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
ค่าความแตกต่างสัมบูรณ์และผลรวมดัชนีสูงสุด:13