在C ++中查找具有最低值的K个项目

在这个问题中,我们得到一个由项目及其值和整数k组成的列表。我们的任务是找到具有最低值的K个项目。 

问题描述: 我们需要从列表中找到值最低的k个项目。

让我们举个例子来了解这个问题,

输入:  item-value = {{item1,200},{item2,100},{item3,500},{item4,400}} k = 2

输出:  item1,item2

解释: 

值最小的两个元素是具有200的item1和具有100的item2。

解决方法

解决这个问题的方法是贪婪地找到价值最小的k个项目。我们将首先以值的升序对项目列表进行排序。从这个排序的列表中,我们将找到k个最不值钱的商品。

该程序说明了我们解决方案的工作原理,

示例

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

bool compVal(pair<string, int> A, pair<string, int> B) {

   if (A.second == B.second)
      returnA.first< B.first;
   returnA.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<<"物品 : "<<items[i].first<<", value : "<<items[i].second<<endl;
   return 0;
}
输出结果
2 items with least value are
物品 : item4, value : 100
物品 : item2, value : 150