Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 관계 연산자를 사용하지 않고 배열에서 최대값 찾기

<시간/>

이 문제에서는 양수 값으로 구성된 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>