在 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>
廣告
資料結構
網路連線
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP