C题,哪位神仙能够指出代码哪有问题
C题, 也是想用二维dp, 代码实现略丑,只过了 60% 的数据, 不知道哪里有问题, 望赐教 QWQ
int dp[2005][2005]; // map<int,int> book; int book[2005][2005]; vector<pair<int, int> > q, qq; class Solution { public: int minCost(int breadNum, int beverageNum, vector<vector<int> >& packageSum) { memset(dp,0x3f,sizeof(dp)); dp[0][0] = 0; q.push_back({0,0}); book[0][0] = 1; for(auto &v : packageSum) { for(auto &*** : q) { int a = ***.first + v[0]; int b = ***.second + v[1]; if(a > breadNum) a = breadNum; if(b > beverageNum) b = beverageNum; dp[a][b] = min(dp[a][b], dp[***.first][***.second]+v[2]); if(!book[a][b]) qq.push_back({a,b}); book[a][b] = 1; } for(auto &*** : qq) q.push_back(***); qq.clear(); } return dp[breadNum][beverageNum]; } };