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

โปรแกรม C++ หาองค์ประกอบที่ K-th น้อยที่สุดจากอาร์เรย์ที่ต่อกัน M ครั้ง


พิจารณาว่าเรามีอาร์เรย์ A และอีกสองจำนวนเต็ม K และ M เราต้องหาองค์ประกอบที่ K-th น้อยที่สุดหลังจากต่ออาร์เรย์กับตัวมันเอง M ครั้ง สมมติว่าอาร์เรย์เป็น A = [3, 1, 2], K = 4 และ M = 3 หลังจากต่อ A 3 ครั้ง จะได้ [3, 1, 2, 3, 1, 2, 3, 1, 2] องค์ประกอบที่ 4 ที่น้อยที่สุดคือ 2

เพื่อแก้ปัญหานี้ เราจะเรียงลำดับอาร์เรย์ A แล้วคืนค่าที่อยู่ที่ดัชนี ((K - 1)/M) ของอาร์เรย์

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

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

int findKSmallestNumber(int A[], int N, int M, int K) {
    sort(A, A + N);
    return (A[((K - 1) / M)]);
}

int main() {
    int A[] = { 3, 1, 2 };
    int M = 3, K = 4;
    int N = sizeof(A) / sizeof(A[0]);
    cout << K << "th smallest number after concatenating " << M << " times, is: " << findKSmallestNumber(A, N, M, K);
}

ผลลัพธ์

4th smallest number after concatenating 3 times, is: 2