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

นับจำนวนสูงสุดขององค์ประกอบในอาร์เรย์ที่ความต่างสัมบูรณ์ไม่เกิน K ใน C++

เราได้รับอาร์เรย์ ให้เรียกว่า arr[] ขององค์ประกอบจำนวนเต็มขนาดใดๆ และจำนวนเต็มบวก k งานคือคำนวณจำนวนคู่ขององค์ประกอบที่ความต่างสัมบูรณ์ไม่เกิน k ที่กำหนด

Arrays เป็นโครงสร้างข้อมูลที่เก็บชุดลำดับขนาดคงที่ขององค์ประกอบชนิดเดียวกัน An array ใช้เก็บชุดข้อมูล แต่บ่อยครั้งมีประโยชน์มากกว่าคิดว่าอาร์เรย์เป็นชุดตัวแปรชนิดเดียวกัน

ตัวอย่าง

อินพุต – int arr[] = {2, 3, 6, 12, 14}, k = 5 เอาต์พุต – count is : 3

คำอธิบาย – คู่ที่มีความต่างสัมบูรณ์สูงสุดไม่เกิน k คือ 5 ในตัวอย่างนี้คู่ที่เกิดขึ้นคือ: (2, 3), (2, 6), (3,6) คือ {2, 3, 6} ดังนั้น count คือ 3

อินพุต – int arr[] = {2, 3, 6, 12, 14}, k = 10 เอาต์พุต – count is : 4

คำอธิบาย – คู่ที่มีความต่างสัมบูรณ์สูงสุดไม่เกิน k คือ 10 คู่คือ: (2, 3), (2, 6), (3,6), (2, 12), (3, 12), (6, 12) คือ {2, 3, 6, 12} ดังนั้น count คือ 4 เนื่องจากองค์ประกอบสูงสุดคือ 4

อินพุต – int arr[] = {2, 3, 6, 12, 14}, k = 0 เอาต์พุต – count is : 0

คำอธิบาย – ไม่มีคู่ที่มีความต่างเป็น 0 ดังนั้น count คือ 0

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

  • สร้างอาร์เรย์ arr[] และจำนวนเต็มบวก k
  • คำนวณความยาวของอาร์เรย์ด้วย length()
  • ใช้ตัวแปรชั่วคราวเก็บจำนวนองค์ประกอบ
  • ประกาศตัวแปรชั่วคราวสองตัว ให้เป็น first และ last เริ่มต้นที่ 0
  • เรียกเมธอด sort เรียงอาร์เรย์ ส่งอาร์เรย์และขนาดอาร์เรย์
  • เริ่มลูป for i จาก 0 ถึง i น้อยกว่าขนาดอาร์เรย์
  • ในลูป เริ่ม while j < ขนาด AND arr[j] <= arr[i] + k
  • ใน while ตรวจสอบ IF count < j-i ตั้งค่า count เป็น j - i และ first เป็น i และ last เป็น j
  • คืนค่า count
  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include <iostream>
#include <algorithm>
using namespace std;

int countmax(int arr[], int size, int K){
    int result = 0;
    int i = 0, j = 0;
    int beg = 0;
    int end = 0;
    sort(arr, arr + size);
    for (i = 0; i < size; i++) {
        while (j < size && arr[j] <= arr[i] + K)
            j++;
        if (result < (j - i)) {
            result = (j - i);
            beg = i;
            end = j;
        }
    }
    return result;
}

int main(){
    int arr[] = { 2, 3, 6, 12, 14 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int K = 5;
    cout << "count is " << countmax(arr, size, K) << endl;
    return 0;
}

เอาต์พุต

count is 3