无矛盾的最佳球队 - C++力扣1626题
题目链接:https://leetcode.com/problems/best-team-with-no-conflicts/description/
解题思路
其实看到这种题目已经可以直接往 DP 上面想了,这题就是中等难度,但是只需要关注一下题目给定的条件基本上就有思路了。
首先我们先来对年龄来排序一下,以便我们之后进行计算。之后我们只需要从头开始遍历,因为已经根据年龄进行排序,所以这里我们只需要检查分数即可,因为比较前面的一定是年龄较小的,所以只要现在的分数比前面的分数低的,那是一律不符合条件的。最后就是更新一下 DP 数组并且找最大值就行了。
完整代码:
class Solution {
public:
int bestTeamScore(vector<int>& scores, vector<int>& ages) {
vector<pair<int, int>> players;
int dp[1005], ans = 0;
for(int i = 0; i < scores.size(); i++) players.push_back({ages[i], scores[i]});
sort(players.begin(), players.end());
for(int i = 0; i < players.size(); i++) {
dp[i] = players[i].second;
for(int j = 0; j < i; j++) {
if(players[j].second <= players[i].second) dp[i] = max(dp[i], dp[j] + players[i].second);
}
ans = max(ans, dp[i]);
}
return ans;
}
};
版权属于:江筱雨
本文链接:https://www.yuisblog.com/archives/224/
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!