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

ค้นหาค่าสูงสุดในอาร์เรย์โดยไม่ต้องใช้ตัวดำเนินการเชิงสัมพันธ์ใน C++


ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ขนาด n ซึ่งประกอบด้วยค่าบวก งานของเราคือ ค้นหาค่าสูงสุดในอาร์เรย์โดยไม่ต้องใช้ตัวดำเนินการเชิงสัมพันธ์

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล: arr[] ={5, 1, 6, 7 , 8, 2}

ผลลัพธ์: 8

แนวทางการแก้ปัญหา

เนื่องจากเราจำเป็นต้องเปรียบเทียบค่าโดยไม่ต้องใช้ตัวดำเนินการเชิงตรรกะ สำหรับสิ่งนี้ เราจำเป็นต้องทำการลบซ้ำ ตัวเลขที่จะอยู่นานขึ้นจะเป็นจำนวนที่มากกว่า

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

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;

int returnMax(int x, int y) {
   
   int c = 0;

   while(x || y)
   {
      if(x)
         x--;
      if(y)
         y--;
      c++;
   }
   return c;
}

int findMaxEle(int A[], int N) {

   int maxVal = A[0];
   
   for (int i = N-1; i; i--)
      maxVal = returnMax(maxVal, A[i]);
   
   return maxVal;
}

int main() {
   
   int A[] = {5, 1, 6, 7 , 8, 2};
   int N = sizeof(A) / sizeof(A[0]);
   cout<<"The maximum element of the array is "<<findMaxEle(A, N);
   return 0;
}

ผลลัพธ์

The maximum element of the array is 8>