Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm phần tử nhỏ nhất trong mảng không dùng toán tử quan hệ trong C++


Mô tả vấn đề

Cho một mảng arr[] gồm n phần tử dương. Nhiệm vụ là tìm phần tử nhỏ nhất không sử dụng các toán tử quan hệ (như ==, >, <, v.v.).

Ví dụ minh họa

Đầu vào:

arr[] = {4, 2, 5, 1, 7}

Đầu ra:

1

Giải thích:

Phần tử nhỏ nhất là 1.

Phương pháp giải quyết

Cách đơn giản: duyệt mảng và tìm phần tử nhỏ nhất. Để so sánh hai số a và b mà không dùng toán tử quan hệ, ta giảm cả hai xuống 1 cho đến khi một trong hai bằng 0. Số trở thành 0 trước là số nhỏ hơn.

Chương trình minh họa

#include <iostream>
using namespace std;

int findMin(int a, int b) {
    int minVal = 0;
    while (a && b) {
        minVal++;
        a--;
        b--;
    }
    return minVal;
}

int findMinimumElement(int arr[], int n) {
    int minVal = arr[0];
    int i = n - 1;
    while (i) {
        minVal = findMin(minVal, arr[i]);
        i--;
    }
    return minVal;
}

int main() {
    int arr[] = {4, 2, 5, 1, 7};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Phần tử nhỏ nhất là " << findMinimumElement(arr, n);
    return 0;
}

Kết quả đầu ra

Phần tử nhỏ nhất là 1