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