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];
    }
};


全部评论
代码中 *** 是个变量名被屏蔽了, 应该不妨碍阅读orz
点赞 回复
分享
发布于 2020-07-09 22:41

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务