此題需要注意的兩個地方是
(1)在某天生產出來的Slimonades,必須在stale_limit天內必須賣完,否則超過stale_limit內拋棄(東西都有保質期)
(2)每天生產出來的Slimonades的數量在0到morning[i]之間,而不是morning[i]
故第i天賣的東西可能來自max(0,i-stale_limit+1)~i 之間任何一天的東西,假設j在這些天數之間,
則第j天生產的東西在第i天賣的數量為min(morning[j], customer[i]),故遍歷一遍即可
#include <iostream> #include <vector> #include <algorithm> using namespace std; class SlimeXSlimonadeTycoon{ public: int sell(vector<int> morning, vector<int> customers, int stale_limit){ int res = 0 ; for(int i = 0 ; i < morning.size(); ++ i){ for(int j = max(0,i-stale_limit+1); j<= i; ++ j){ if(customers[i] > 0){ int t = min(customers[i],morning[j]); res += t; customers[i] -=t; morning[j] -=t; } } } return res; } };