Cho một mảng chứa các phần tử nguyên. Nhiệm vụ: tính các mảng con từ mảng cho trước, sau đó kiểm tra các phần tử trong mảng con có theo thứ tự tăng chặt hay không. Nếu có thì đếm, ngược lại loại bỏ.
Cách tiếp cận: dừng kiểm tra mảng con nếu phần tử tại vị trí 0 và 1 không theo thứ tự tăng.
Ví dụ
Đầu vào: int a[] = {1, 7, 5}
Đầu ra: Số mảng con tăng chặt: 1
Giải thích: Các mảng con: {1,7,5}, {1,7}, {7,5}. Chỉ {1,7} tăng chặt.
Đầu vào: int a[] = {1, 2, 7, 10}
Đầu ra: Số mảng con tăng chặt: 6
Giải thích: Các mảng con: {1,2}, {1,2,7}, {1,2,7,10}, {2,7}, {2,7,10}, {7,10} - tất cả tăng chặt.
Phương pháp sử dụng
- Khai báo mảng, nhập phần tử, truyền vào hàm
countIncSubarrays(a, a.length). - Trong hàm khởi tạo biến đếm.
- Vòng lặp
FOR itừ 0 đến độ dài mảng. - Vòng lặp
FOR jtừi+1đến độ dài mảng. - Nếu
a[j] > a[j-1]tăng đếm, ngược lạibreak. - In kết quả.
Ví dụ mã nguồn (Java)
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();
}
int result = countIncSubarrays(a, a.length);
System.out.println("Count of strictly increasing subarrays is " + result);
}
}
Chạy mã trên cho kết quả:
Kết quả
Count of strictly increasing subarrays is 6