Trong bài toán này, chúng ta được cung cấp một mảng arr [] có kích thước n gồm các giá trị dương. Nhiệm vụ của chúng ta là tìm giá trị lớn nhất trong một mảng mà không cần sử dụng Toán tử quan hệ.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào: arr [] ={5, 1, 6, 7, 8, 2}
Đầu ra: 8
Phương pháp tiếp cận giải pháp
Vì chúng ta cần so sánh các giá trị mà không cần sử dụng toán tử logic. Đối với điều này, chúng ta cần thực hiện phép trừ lặp đi lặp lại, số nào tồn tại lâu hơn sẽ là số lớn hơn.
Chúng tôi sẽ giảm tất cả các giá trị một cho đến khi chúng trở thành 0. Chúng ta sẽ bắt đầu với hai giá trị đầu tiên của mảng và tìm giá trị lớn nhất của cả hai. Sau đó, chúng ta cần so sánh phần còn lại của các giá trị mảng với phần tử lớn nhất của mảng. Sử dụng điều này, chúng tôi sẽ tìm thấy tối đa của tất cả các phần tử.
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
Ví dụ
#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; }
Đầu ra
The maximum element of the array is 8>