以下是用 C++ 实现的代码示例: ```cpp #include <iostream> #include <vector> struct Milk { int brand; int quantity; int purchaseDay; int expirationDay; }; std::vector<Milk> stocks; void purchase(int brand, int quantity) { Milk newMilk; newMilk.brand = brand; newMilk.quantity = quantity; newMilk.purchaseDay = stocks.size() + 1; if (brand == 1) { newMilk.expirationDay = newMilk.purchaseDay + 7; } else { newMilk.expirationDay = newMilk.purchaseDay + 15; } stocks.push_back(newMilk); } void consume(int quantity) { int remaining = quantity; for (int i = 0; i < stocks.size(); ++i) { if (stocks[i].quantity > 0 && stocks[i].purchaseDay <= stocks.size() && stocks[i].expirationDay >= stocks.size() + 1) { if (stocks[i].quantity <= remaining) { remaining -= stocks[i].quantity; stocks[i].quantity = 0; } else { stocks[i].quantity -= remaining; remaining = 0; break; } } } } void check() { int aStock = 0, aCost = 0, aWaste = 0; int bStock = 0, bCost = 0, bWaste = 0; for (const auto& milk : stocks) { if (milk.brand == 1) { if (milk.purchaseDay + 7 < stocks.size() + 1) { aWaste += milk.quantity; } else { aStock += milk.quantity; } aCost += milk.quantity; } else { if (milk.purchaseDay + 15 < stocks.size() + 1) { bWaste += milk.quantity; } else { bStock += milk.quantity; } bCost += milk.quantity; } } std::cout << "a stock:" << aStock << " cost:" << aCost << " waste:" << aWaste << std::endl; std::cout << "b stock:" << bStock << " cost:" << bCost << " waste:" << bWaste << std::endl; } int main() { int n; std::cin >> n; for (int i = 0; i < n; ++i) { std::string op; std::cin >> op; if (op == "purchase") { int brand, quantity; std::cin >> brand >> quantity; purchase(brand, quantity); } else if (op == "cost") { int quantity; std::cin >> quantity; consume(quantity); } else if (op == "check") { check(); } } return 0; } ``` 以下是三个可行的改进建议: 1. 可以添加错误处理机制,例如输入不合法时给出提示。 2. 对代码进行模块化,将不同的功能封装成单独的函数,提高代码的可读性和可维护性。 3. 考虑使用更高效的数据结构,如优先队列来处理牛奶的使用顺序。 [2024-12-29 17:09:47 | AI写代码神器 | 811点数解答]