在 C++ 中不使用关系运算符查找数组的最大值


在这个问题中,我们给定了一个由正值组成的、大小为 n 的数组 arr[]。我们的任务是:在不使用关系运算符的情况下查找数组中的最大值。

让我们举一个例子来理解这个问题,

输入: 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>

更新于: 2021-01-25

199 次浏览

开启您的职业生涯

完成该课程即可获得认证

开始
广告