贪心算法,AC83%: #include <iostream> #include <vector> #include <algorithm>   #include <string> #include <sstream> using namespace std; bool SortByM1(const int &v1, const int &v2)  { return v1 > v2; } //main int main(){ vector<int> vecPrice; int nMoney; int nTemp; int nCount = 0; int nCurrentNumber = 0; string strLine;  getline(cin, strLine);  stringstream iss(strLine);  for (int i; iss >> i; vecPrice.push_back(i)); nMoney = vecPrice.back(); vecPrice.pop_back(); //降序排列 sort(vecPrice.begin(), vecPrice.end(), SortByM1); vector<int>::const_iterator iter = vecPrice.begin(); for (; iter != vecPrice.end(); iter++){ nCurrentNumber = *iter; while (nCurrentNumber<=nMoney) //贪心算法 { nCount++; nMoney -= nCurrentNumber; } if (nMoney==0) { break; } } if (nCount==0||nMoney>0) cout << "-1" << endl; else    cout << nCount << endl; }
点赞 评论
牛客网
牛客企业服务