ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ของ n องค์ประกอบ งานของเราคือ ค้นหาองค์ประกอบสูงสุด k ของอาร์เรย์ในลำดับเดิม
เราจำเป็นต้องค้นหาองค์ประกอบสูงสุด k ของอาร์เรย์แล้วพิมพ์ตามที่ได้จัดทำดัชนีไว้
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: arr[] ={5, 1, 3, 6, 2}, k =2
ผลลัพธ์: 5, 6
คำอธิบาย:
อิลิเมนต์สองตัวที่ใหญ่ที่สุดของอาร์เรย์คือ 6 และ 5 แต่ 5 มาก่อน 6 ในอาร์เรย์ดั้งเดิม ดังนั้นเราจึงพิมพ์ในลักษณะนั้น
แนวทางการแก้ปัญหา
เพื่อแก้ปัญหาและพิมพ์ k องค์ประกอบตามลำดับเดิม
สำหรับสิ่งนี้ เราจะสร้าง decArray ที่จะเก็บองค์ประกอบของ arr[] ตามลำดับจากมากไปน้อย จากนั้นเราจะสำรวจอาร์เรย์ดั้งเดิมและพิมพ์องค์ประกอบที่ใหญ่ที่สุด k ตามลำดับโดยใช้ decArray[]
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; bool seachVal(int decArr[], int k, int ele){ for(int i = 0; i < k; i++){ if( decArr[i] == ele) return true; } return false; } void printKMaxEle(int arr[], int k, int n) { int decArr[n]; for(int i = 0; i < n ; i++){ decArr[i] = arr[i]; } sort(decArr, decArr + n, greater<int>()); for (int i = 0; i < n; ++i) if ( seachVal(decArr, k, arr[i]) ) cout<<arr[i]<<" "; } int main() { int arr[] = { 15, 1, 3, 6, 2, 34, 8, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 3; cout<<k<<" maximum elements of the array in their original order are \n"; printKMaxEle(arr, k, n); return 0; }
ผลลัพธ์
3 maximum elements of the array in their original order are 15 34 9