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

นับการเพิ่ม Subarrays อย่างเคร่งครัดใน C++


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

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

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

ป้อนข้อมูล: int a[] ={1, 7, 5}

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

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

ป้อนข้อมูล: int a[] ={1, 2, 7, 10}

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

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

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

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

ตัวอย่าง

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

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

ผลลัพธ์

Count of strictly increasing subarrays is 6