Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับ Subarray ที่เพิ่มขึ้นอย่างเคร่งครัดใน C++

เราได้รับอาร์เรย์ที่มีสมาชิกเป็นจำนวนเต็ม ภารกิจคือคำนวณ subarray จากอาร์เรย์ที่กำหนดก่อน แล้วตรวจสอบว่าสมาชิกใน subarray อยู่ในลำดับเพิ่มขึ้นหรือไม่ ถ้าใช่ เราจะนับ subarray นั้น มิฉะนั้นจะทิ้ง

แนวทางที่นี่คือ หยุดตรวจสอบ subarray ต่อไปหากสมาชิกตำแหน่ง 0 และ 1 ไม่อยู่ในลำดับเพิ่มขึ้น

ตัวอย่างใน C++

Input: int a[] = {1, 7, 5}

Output: จำนวน subarray ที่เพิ่มขึ้นอย่างเคร่งครัดคือ 1

คำอธิบาย - Subarray ที่เป็นไปได้คือ {1,7,5}, {1,7}, {7,5} โดยที่ {1,7} เป็นอาร์เรย์เดียวที่เพิ่มขึ้นอย่างเคร่งครัด

Input: int a[] = {1, 2, 7, 10}

Output: จำนวน subarray ที่เพิ่มขึ้นอย่างเคร่งครัดคือ 6

คำอธิบาย - Subarray ที่เป็นไปได้คือ {{1, 2}, {1, 2, 7}, {1, 2, 7, 10}, {2, 7}, {2, 7, 10} และ {7, 10} และทั้งหมดเพิ่มขึ้นอย่างเคร่งครัด

แนวทางที่ใช้ในโปรแกรมด้านล่าง

  • ประกาศอาร์เรย์ รับสมาชิก และส่งข้อมูลให้ฟังก์ชัน countIncSubarrays(a, a.length) พร้อมความยาวอาร์เรย์
  • ภายในฟังก์ชัน เริ่มต้นตัวนับ count
  • เริ่มลูป FOR i จาก 0 ถึงความยาวอาร์เรย์
  • ภายในลูป เริ่มลูป FOR อีกทีจาก j = i+1 ถึงความยาวอาร์เรย์
  • ภายในลูป ตรวจสอบ IF a[j] > a[j-1] เพิ่ม count
  • ELSE break ลูป เพราะการตรวจสอบลำดับเพิ่มขึ้นล้มเหลว
  • ใน main function ผลลัพธ์ถูกบันทึกจากการเรียกฟังก์ชันและพิมพ์เป็นเอาต์พุต

ตัวอย่าง

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); 
    } 
}

หากเรารันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้

ผลลัพธ์

Count of strictly increasing subarrays is 6