이 문제에서는 양수 값으로 구성된 n 크기의 배열 arr[]이 제공됩니다. 우리의 임무는 관계 연산자를 사용하지 않고 배열에서 최대값을 찾는 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력: arr[] ={5, 1, 6, 7, 8, 2}
출력: 8
해결 방법
논리 연산자를 사용하지 않고 값을 비교해야 하기 때문입니다. 이를 위해 우리는 반복적인 빼기를 수행해야 하며 더 오래 지속되는 숫자가 더 커질 것입니다.
모든 값이 0이 될 때까지 1씩 감소합니다. 배열의 처음 두 값으로 시작하여 둘 중 가장 큰 값을 찾습니다. 그런 다음 나머지 배열 값을 배열의 가장 큰 요소와 비교해야 합니다. 이것을 사용하여 모든 요소의 최대값을 찾습니다.
우리 솔루션의 작동을 설명하는 프로그램,
예
#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>