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