Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में सबसे कम मान वाले K आइटम खोजें

इस समस्या में, हमें एक सूची दी गई है जिसमें आइटम और उनके मान और एक पूर्णांक k है। हमारा काम सबसे कम मान वाले K आइटम ढूंढना है।

समस्या का विवरण: हमें सूची से k आइटम खोजने की जरूरत है जिनका मूल्य सबसे कम है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: आइटम-मान ={ {आइटम1, 200}, {आइटम2, 100}, {आइटम3, 500}, {आइटम4, 400}} के =2

आउटपुट: आइटम1, आइटम2

स्पष्टीकरण:

कम से कम मूल्य वाले दो तत्व हैं 200 के साथ आइटम 1 और 100 के साथ आइटम 2।

समाधान दृष्टिकोण

समस्या का समाधान कम से कम मूल्य वाली 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

  1. सी ++ में दिए गए बाधाओं के साथ मैट्रिक्स में सबसे लंबा पथ खोजें

    मान लीजिए कि हमारे पास ऑर्डर n का एक वर्ग मैट्रिक्स है। इसमें सभी विशिष्ट तत्व हैं। इसलिए हमें अधिकतम लंबाई पथ ज्ञात करना है, जैसे कि पथ के साथ सभी कोशिकाएं 1 के अंतर के साथ बढ़ते क्रम में हैं। एक सेल से हम चार दिशाओं में जा सकते हैं। बाएँ, दाएँ, ऊपर और नीचे। तो अगर मैट्रिक्स की तरह है - 1 2 9 5 3

  1. C++ में बाइनरी सर्च ट्री में न्यूनतम मान वाला नोड खोजें

    मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है। हमें बाइनरी सर्च ट्री में न्यूनतम तत्व खोजना है। तो अगर बीएसटी नीचे जैसा है - न्यूनतम तत्व 1 होगा। जैसा कि हम जानते हैं कि लेफ्ट सबट्री में हमेशा छोटे तत्व होते हैं। इसलिए यदि हम बाएं सबट्री को बार-बार पार करते हैं जब तक कि बाईं ओर शून्य न हो, हम सब

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को