Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm Số phân đoạn mà tất cả các phần tử đều lớn hơn X bằng C ++

Trong bài viết này, chúng ta phải tìm số lượng phân đoạn hoặc mảng con trong một trình tự nhất định trong đó các phần tử lớn hơn số X đã cho.

Chúng tôi chỉ có thể đếm các phân đoạn chồng chéo một lần và hai phần tử hoặc phân đoạn liền kề không được tính riêng rẽ. Vì vậy, đây là ví dụ cơ bản của vấn đề đã cho -

Input : arr[ ] = { 9, 6, 7, 11, 5, 7, 8, 10, 3}, X = 7
Output : 3
Explanation : { 9 }, { 11 } and { 8, 10 } are the segments greater than 7

Input : arr[ ] = { 9, 6, 12, 2, 11, 14, 8, 14 }, X = 8
Output : 4
Explanation : { 9 }, { 12 }, { 11, 14 } and { 14 } are the segments greater than 8

Phương pháp tiếp cận để tìm giải pháp

Phương pháp tiếp cận ngây thơ

Trong sự cố này, chúng tôi đang khởi tạo một trạng thái biến với 0 và bắt đầu xử lý mảng đã cho và thay đổi trạng thái thành 1 khi tìm thấy phần tử lớn hơn X và tiếp tục xử lý các phần tử và thay đổi trạng thái trở về 0 khi tìm thấy số nhỏ hơn hoặc bằng X và số gia tăng bằng 1 cho mỗi lần trạng thái chuyển về 1 và quay lại 0.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main (){
    int a[] = { 9, 6, 12, 2, 11, 14, 8, 14 };
    int n = sizeof (a) / sizeof (a[0]);
    int X = 8;
    int state = 0;
    int count = 0;
    // traverse the array
    for (int i = 0; i < n; i++){
        // checking whether element is greater than X
        if (a[i] > X){
           state = 1;
        }
        else{
           // if flag is true
           if (state)
               count += 1;
            state = 0;
        }
    }
    // checking for the last segment
    if (state)
        count += 1;
    cout << "Number of segments where all elements are greater than X: " << count;
    return 0;
}

Đầu ra

Number of segments where all elements are greater than X: 4

Giải thích về Chương trình trên

Trong chương trình trên, chúng tôi đang sử dụng trạng thái làm công tắc và chúng tôi đặt nó thành 1 khi tìm thấy một số lớn hơn X và đặt nó thành 0 khi tìm thấy một số nhỏ hơn hoặc bằng X, và cho mọi trạng thái chuyển về 1 và trở về 0, chúng tôi tăng số đếm lên 1. Cuối cùng, in kết quả được lưu trong số đếm.

Kết luận

Trong bài viết này, chúng tôi giải quyết vấn đề tìm số đoạn mà tất cả các phần tử đều lớn hơn X bằng cách áp dụng cách tiếp cận đặt trạng thái thành 1 và 0 bất cứ khi nào một đoạn được tìm thấy. Chúng tôi có thể viết chương trình này bằng bất kỳ ngôn ngữ lập trình nào khác như C, Java, Python, v.v.