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

ความแตกต่างสูงสุดระหว่างสององค์ประกอบเพื่อให้องค์ประกอบที่ใหญ่กว่าปรากฏขึ้นหลังจำนวนที่น้อยกว่าใน C


เราได้รับอาร์เรย์ของจำนวนเต็มขนาด N อาร์เรย์ประกอบด้วยจำนวนเต็มในลำดับแบบสุ่ม ภารกิจคือการค้นหาความแตกต่างสูงสุดระหว่างสององค์ประกอบเพื่อให้องค์ประกอบที่ใหญ่กว่าปรากฏขึ้นหลังจำนวนที่น้อยกว่า นั่นคือ Arr[j]-Arr[i] เป็นค่าสูงสุดที่ j>i.

ป้อนข้อมูล

Arr[] = { 2,1,3,8,3,19,21}.

ผลผลิต −ความแตกต่างสูงสุดระหว่างสององค์ประกอบโดยที่องค์ประกอบที่ใหญ่กว่าปรากฏขึ้นหลังจากจำนวนที่น้อยกว่า − 20

คำอธิบาย − ค่าความแตกต่างสูงสุดระหว่าง 21 และ 1 และ 21 ปรากฏขึ้นหลัง 1 ในอาร์เรย์

ป้อนข้อมูล

Arr[] = {18, 2,8,1,2,3,2,6 }.

ผลผลิต −ผลต่างสูงสุดระหว่างสององค์ประกอบโดยที่องค์ประกอบที่ใหญ่กว่าปรากฏขึ้นหลังจำนวนที่น้อยกว่า − 6

คำอธิบาย − ความแตกต่างสูงสุดระหว่าง 8 ถึง 2 และ 8 ปรากฏขึ้นหลังจาก 2 ในอาร์เรย์

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

  • ประกาศอาร์เรย์ของจำนวนเต็มที่มีด้านคู่ของรูปสี่เหลี่ยมผืนผ้า ( Arr[] )

  • สร้างตัวแปรเพื่อเก็บขนาดของอาร์เรย์ (น)

  • ฟังก์ชัน maxArea(int arr[],int n) ใช้เพื่อคำนวณพื้นที่สูงสุดสำหรับสี่เหลี่ยมผืนผ้า ใช้อาร์เรย์อินพุตและขนาดของมันเป็นอาร์กิวเมนต์

  • ภายใน maxArea() เราประกาศอาร์เรย์ Dim[2] สองร้านสูงสุด สองด้านที่พบหลังจากสำรวจอาร์เรย์ที่เรียงลำดับ (ในลำดับจากมากไปน้อย) arr[].

  • เนื่องจาก arr[] ถูกเรียงลำดับจากมากไปน้อย 4 ด้านสูงสุดจะต้องอยู่ในจุดเริ่มต้น เราจะวนซ้ำ arr[] เพื่อให้พบคู่ของด้าน

  • เริ่มต้น Dim[] ด้วย 0 ในตอนแรก

  • ภายในวง while เราใส่เงื่อนไขที่จะดำเนินต่อไปจนถึง j<2 ว่าไม่พบค่าสำหรับ dim[0] และ dim[1] หรือจุดสิ้นสุดของ arr[] (ผม

  • หากพบคู่ของด้านดังกล่าว ( if(arr[i]==arr[i+1]) ) ให้เก็บไว้ใน dim[j] และเพิ่ม j สำหรับด้านถัดไป

  • ส่งคืนผลลัพธ์เป็นผลคูณของ dim[0] และ dim[1].

  • หมายเหตุ - sort(arr,n) ควรเรียงลำดับ arr จากมากไปหาน้อย

ตัวอย่าง

#include <stdio.h>
int maxDiff(int arr[], int n){
   // Maximum difference found so far
   int MD = arr[1] - arr[0];
   // Minimum number visited so far
   int min = arr[0];
   for(int i = 1; i < n; i++){
      if (arr[i] - min > MD)
         MD = arr[i] - min;
      if (arr[i] < min)
         min = arr[i];
   }
   return MD;
}
/* Driver program to test above function */
int main(){
   int arr[] = {2,5,7,3,4,12};
   int n=6;
   // Function calling
   printf("Maximum difference is : %d ",maxDiff(arr, n));
   return 0;
}

ผลลัพธ์

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

The maximum difference between two elements such that the larger element appears after the smaller number : 10