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

หาค่าน้อยที่สุดลำดับที่ k หลังลบจำนวนเต็มบางส่วนออกจากจำนวนธรรมชาติใน C++

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาค่าน้อยที่สุดลำดับที่ k หลังจากลบจำนวนเต็มบางส่วนออกจากจำนวนธรรมชาติ

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

ขั้นตอนการแก้ปัญหา

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

ตัวอย่างโค้ด

#include <bits/stdc++.h> 
#define MAX 1000000 
using namespace std; 

int smallestNumber(int arr[], int n, int k) { 
    int flag[MAX]; 
    memset(flag, 0, sizeof flag); 
    for (int i = 0; i < n; i++) { 
        flag[arr[i]] = 1; 
    } 
    for (int i = 1; i < MAX; i++) { 
        if (flag[i] != 1) { 
            k--; 
        } 
        if (!k) { 
            return i; 
        } 
    } 
    return 0; 
} 

int main() { 
    int k = 2; 
    int arr[] = { 3, 5 }; 
    cout << smallestNumber(arr, 2, k) << endl; 
    return 0; 
}

ผลลัพธ์

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

2

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น