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

ความแตกต่างสูงสุดระหว่างดัชนีแรกและดัชนีสุดท้ายขององค์ประกอบในอาร์เรย์ใน C


เราได้รับอาร์เรย์ของจำนวนเต็มขนาด N อาร์เรย์ประกอบด้วยจำนวนเต็มในลำดับแบบสุ่ม ภารกิจคือการค้นหาความแตกต่างสูงสุดระหว่างดัชนีแรกและดัชนีสุดท้ายขององค์ประกอบในอาร์เรย์ เราต้องหาตัวเลขที่ปรากฎสองครั้งในอาร์เรย์ และความแตกต่างระหว่างดัชนีของมันคือสูงสุด หากมีคู่ดังกล่าวมากกว่า เราจะเก็บความแตกต่างดังกล่าวไว้สูงสุดระหว่างดัชนี

ป้อนข้อมูล

Arr[] = { 2,1,3,1,3,2,5,5 }.

ผลผลิต −ความแตกต่างสูงสุดระหว่างดัชนีแรกและดัชนีสุดท้ายขององค์ประกอบในอาร์เรย์ − 5

คำอธิบาย − คู่ขององค์ประกอบและความแตกต่างระหว่างดัชนีของพวกมันมีดังนี้ −

(2,2) Arr[0] and Arr[5] 5-0=5 max difference till now is 5
(1,1) Arr[1] and Arr[3] 3-1=2 max difference till now is 5
(3,3) Arr[2] and Arr[4] 4-2=2 max difference till now is 5
(5,5) Arr[6] and Arr[7] 7-6=1 max difference till now is 5

ป้อนข้อมูล

Arr[] = { 2,2,3,4,8,3,4,4,8,7 }.

ผลผลิต −ความแตกต่างสูงสุดระหว่างดัชนีแรกและดัชนีสุดท้ายขององค์ประกอบในอาร์เรย์ − 4

คำอธิบาย − คู่ขององค์ประกอบและความแตกต่างระหว่างดัชนีของพวกมันมีดังนี้ −

(2,2) Arr[0] and Arr[1] ; 1-0=1; max difference till now is 1
(3,3) Arr[2] and Arr[5] ; 5-2=3; max difference till now is 3
(4,4,4) Arr[3],Arr[6],Arr[7] ; 7-6=1,6-3=3,7-3=4; max difference till now is 4
(8,8) Arr[4] and Arr[8] ; 8-4=4 ; max difference till now is 4

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

  • ประกาศอาร์เรย์ของจำนวนเต็มที่มีตัวเลขซ้ำในลำดับแบบสุ่ม ( Arr[] )

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

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

  • ภายใน maxDifference() เราประกาศว่า maxD ใช้เพื่อเก็บความแตกต่างของดัชนีสูงสุดที่พบจนถึงตอนนี้

  • เริ่มต้นจากองค์ประกอบแรก ( ดัชนี i=0 ) สำรวจอาร์เรย์โดยใช้ for วนซ้ำ

  • ในการซ้อนสำหรับวนซ้ำอาร์เรย์ที่เหลือ (j=i+1) จนถึงดัชนีสุดท้ายจะถึง

  • หากเราจะพบองค์ประกอบเดียวกันกับ Arr[i] เราจะคำนวณความแตกต่างระหว่างดัชนีของมัน i,j และหากมากกว่าค่าก่อนหน้าของ maxD เราจะอัปเดต maxD

  • ทำต่อจนจบทั้งสองลูป

  • ส่งคืนผลลัพธ์ที่เก็บไว้ใน maxD.

ตัวอย่าง

#include <stdio.h>
int maxDifference(int arr[],int n){
   int maxD=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]==arr[j] && (j-i)>maxD)
            maxD=j-i;
      }
   }
   return maxD;
}
int main(){
   int Arr[] = {1, 4, 1, 3, 3, 5, 4, 5, 2};
   int N = sizeof(Arr) / sizeof(Arr[0]);
   printf("Maximum difference between first and last indexes of an element in array : %d" ,maxDifference(Arr, N);
   return 0;
}

ผลลัพธ์

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

Maximum difference between first and last indexes of an element in array : 5