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

Đếm mảng con không tăng trong C++


Cho mảng arr[]. Đếm mảng con (độ dài ≥ 1) không tăng (mỗi phần tử ≤ phần tử trước).

Ý tưởng

  • Duyệt mảng, đếm độ dài đoạn không tăng liên tiếp len.
  • Khi gặp phần tử tăng, cộng len*(len+1)/2 vào kết quả (số mảng con của đoạn đó), reset len = 1.
  • Cuối mảng xử lý đoạn cuối.

Ví dụ hoàn chỉnh

#include <bits/stdc++.h>
using namespace std;

int subarrays(int arr[], int size) {
    int count = 0;
    int len = 1;
    for (int i = 0; i < size - 1; ++i) {
        if (arr[i + 1] <= arr[i])
            len++;
        else {
            count += (len * (len + 1)) / 2;
            len = 1;
        }
    }
    if (len > 1)
        count += (len * (len + 1)) / 2;
    return count;
}

int main() {
    int arr[] = {2, 6, 1, 8, 3};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Số mảng con không tăng: " << subarrays(arr, size);
    return 0;
}

Kết quả

Số mảng con không tăng: 7