ในปัญหานี้ เราได้รับอาร์เรย์ 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>