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

Đếm số lượng phân chia tăng nghiêm ngặt trong C ++

Chúng ta được cung cấp một mảng chứa các phần tử nguyên và nhiệm vụ trước tiên là tính toán mảng con trong mảng đã cho, sau đó kiểm tra xem các phần tử trong mảng con có theo thứ tự tăng dần hay không. Nếu có, thì chúng tôi sẽ xem xét mảng con còn lại nó sẽ bị loại bỏ.

Cách tiếp cận ở đây là ngừng kiểm tra thêm mảng con nếu các phần tử ở vị trí thứ 0 và 1 không theo thứ tự tăng dần.

Ví dụ- trong C ++

Đầu vào: int a [] ={1, 7, 5}

Đầu ra: Số lượng các mảng con tăng dần là 1

Giải thích - Các mảng con có thể có bao gồm {1,7,5}, {1,7}, {7,5} trong đó {1,7} là mảng duy nhất có thứ tự tăng dần.

Đầu vào: int a [] ={1, 2, 7, 10}

Đầu ra: Số lượng các mảng con tăng dần là 6

Giải thích - Các mảng con có thể có bao gồm {{1, 2}, {1, 2, 7}, {1, 2, 7, 10}, {2, 7}, {2, 7, 10} và {7, 10} và tất cả đang tăng dần theo thứ tự.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Một mảng được khai báo, các phần tử được nhập và dữ liệu sau đó được chuyển đến hàm có tên countIncSubarrays (a, a.length) cùng với độ dài của mảng để xử lý thêm.
  • Bên trong hàm, hãy khởi tạo một cờ đếm.
  • Bắt đầu vòng lặp FOR i từ 0 cho đến hết chiều dài của một mảng
  • Bên trong vòng lặp, bắt đầu một Vòng lặp FOR j khác từ i + 1 cho đến hết độ dài của một mảng
  • Trong vòng lặp, hãy kiểm tra xem [j] có lớn hơn [j-1] không và tăng số lượng.
  • Nếu không, hãy ngắt vòng lặp vì việc kiểm tra thứ tự ngày càng tăng không thành công.
  • Trong hàm chính, kết quả được thu thập từ lệnh gọi hàm và được in dưới dạng đầu ra.

Ví dụ

import java.util.*;
class testqwe {
   static int MAX = 4;
   static int a[] = new int[MAX];
   static Scanner scan = new Scanner(System.in);
   static int countIncSubarrays(int a[], int n) {

      int count = 0;
      for (int i = 0; i < n; i++) {
         for (int j = i + 1; j < n; j++) {
            if (a[j] > a[j - 1])
               count++;
            else
               break;
         }
      }
      return count;
   }

   public static void main(String[] args) {
      for (int i = 0; i < a.length; i++) {
         a[i] = scan.nextInt(); //1,2,7,0
      }
      int result = countIncSubarrays(a, a.length);
      System.out.println("Count of strictly increasing subarrays is " +
         result);
   }
}

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Đầu ra

Count of strictly increasing subarrays is 6