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

ค้นหาจำนวนเซ็กเมนต์ที่องค์ประกอบทั้งหมดมากกว่า X โดยใช้ C++


ในบทความนี้ เราต้องหาจำนวนเซ็กเมนต์หรืออาร์เรย์ย่อยในลำดับที่กำหนดโดยที่องค์ประกอบมากกว่าจำนวน X ที่กำหนด

เราสามารถนับส่วนที่ทับซ้อนกันได้เพียงครั้งเดียว และไม่ควรนับองค์ประกอบหรือส่วนที่ต่อเนื่องกันสองรายการแยกกัน นี่คือตัวอย่างพื้นฐานของปัญหาที่กำหนด -

Input : arr[ ] = { 9, 6, 7, 11, 5, 7, 8, 10, 3}, X = 7
Output : 3
Explanation : { 9 }, { 11 } and { 8, 10 } are the segments greater than 7

Input : arr[ ] = { 9, 6, 12, 2, 11, 14, 8, 14 }, X = 8
Output : 4
Explanation : { 9 }, { 12 }, { 11, 14 } and { 14 } are the segments greater than 8

แนวทางในการหาแนวทางแก้ไข

แนวทางที่ไร้เดียงสา

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

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main (){
    int a[] = { 9, 6, 12, 2, 11, 14, 8, 14 };
    int n = sizeof (a) / sizeof (a[0]);
    int X = 8;
    int state = 0;
    int count = 0;
    // traverse the array
    for (int i = 0; i < n; i++){
        // checking whether element is greater than X
        if (a[i] > X){
           state = 1;
        }
        else{
           // if flag is true
           if (state)
               count += 1;
            state = 0;
        }
    }
    // checking for the last segment
    if (state)
        count += 1;
    cout << "Number of segments where all elements are greater than X: " << count;
    return 0;
}

ผลลัพธ์

Number of segments where all elements are greater than X: 4

คำอธิบายของโปรแกรมข้างต้น

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

บทสรุป

ในบทความนี้ เราแก้ปัญหาในการค้นหาจำนวนเซ็กเมนต์ที่องค์ประกอบทั้งหมดมากกว่า X โดยใช้วิธีการตั้งค่าสถานะเป็น 1 และ 0 ทุกครั้งที่พบเซ็กเมนต์ เราสามารถเขียนโปรแกรมนี้ในภาษาโปรแกรมอื่น ๆ เช่น C, Java, Python เป็นต้น