इस समस्या में, हमें एक सूची दी गई है जिसमें आइटम और उनके मान हैं और एक पूर्णांक k। हमारा कार्य सबसे कम मान वाले K आइटम ढूंढना है।
समस्या विवरण: हमें सूची से k आइटम ढूंढने हैं जिनका मान सबसे कम है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: item-value = { {item1, 200}, {item2, 100}, {item3, 500}, {item4, 400}} k = 2
आउटपुट: item1 , item2
व्याख्या:
सबसे कम मान वाले दो तत्व item1 (200 के साथ) और item2 (100 के साथ) हैं।
समाधान दृष्टिकोण
समस्या का एक समाधान लालची तरीके से k आइटम को सबसे कम मान के साथ ढूंढना है। हम पहले आइटम सूची को मान के आरोही क्रम में सॉर्ट करेंगे। इस सॉर्ट की गई सूची से हम k सबसे कम मान वाले आइटम ढूंढेंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool compVal(pair<string, int> A, pair<string, int> B) {
if (A.second == B.second)
return A.first < B.first;
return A.second < B.second;
}
int main() {
int k = 2;
int n = 3;
vector<pair<string, int> > items;
items.push_back(make_pair("item1", 350));
items.push_back(make_pair("item2", 150));
items.push_back(make_pair("item3", 500));
items.push_back(make_pair("item4", 100));
sort(items.begin(), items.end(), compVal);
cout<<k<<" items with least value are \n";
for (int i = 0; i < min(n, k); ++i)
cout<<"Item : "<<items[i].first<<", value : "<<items[i].second<<endl;
return 0;
}
आउटपुट
2 items with least value are Item : item4, value : 100 Item : item2, value : 150