本题比较基础,计算出每种牛奶每天所需的花费,从小到大排序即可。
#include <iostream> #include <string> #include <algorithm> using namespace std; struct milk { string brand; //品牌 int price; //价格 int volume; //容量 double pricePerDay; //每天所需价格 }; bool cmp(milk m1, milk m2) //排列规则 { if (m1.pricePerDay != m2.pricePerDay) return m1.pricePerDay < m2.pricePerDay; else return m1.volume > m2.volume; } int main() { int T, N; cin >> T; while (T--) { int day, temp; //牛奶能喝的天数 cin >> N; milk* arr = new milk[N]; for (int i = 0; i < N; i++) { cin >> arr[i].brand >> arr[i].price >> arr[i].volume; day = 0; temp = arr[i].volume; while (temp >= 200) { temp -= 200; ++day; if (day >= 5) break; } if (day > 0) //牛奶能喝至少一天 arr[i].pricePerDay = (double)arr[i].price / day; else //牛奶不够喝一天(容量小于200) arr[i].pricePerDay = 999999; } sort(arr, arr + N, cmp); //排序 cout << arr[0].brand << endl; delete[] arr; } return 0; }继续加油。
