- 做菜順序
一個廚師收集了他 n 道菜的滿意程度 satisfaction ,這個廚師做出每道菜的時間都是 1 單位時間。
一道菜的 「喜愛時間」係數定義爲烹飪這道菜以及之前每道菜所花費的時間乘以這道菜的滿意程度,也就是 time[i]*satisfaction[i] 。
請你返回做完所有菜 「喜愛時間」總和的最大值爲多少。
你可以按 任意 順序安排做菜的順序,你也可以選擇放棄做某些菜來獲得更大的總和。
示例 1:
輸入:satisfaction = [-1,-8,0,5,-9]
輸出:14
解釋:去掉第二道和最後一道菜,最大的喜愛時間係數和爲 (-11 + 02 + 5*3 = 14) 。每道菜都需要花費 1 單位時間完成。
示例 2:
輸入:satisfaction = [4,3,2]
輸出:20
解釋:按照原來順序相反的時間做菜 (21 + 32 + 4*3 = 20)
示例 3:
輸入:satisfaction = [-1,-4,-5]
輸出:0
解釋:大家都不喜歡這些菜,所以不做任何菜可以獲得最大的喜愛時間係數。
示例 4:
輸入:satisfaction = [-2,5,-1,0,3,-3]
輸出:35
提示:
n == satisfaction.length
1 <= n <= 500
-10^3 <= satisfaction[i] <= 10^3
思路:排序後,二重循環暴力即可,最後一題竟然這麼水????
class Solution {
public:
int maxSatisfaction(vector<int>& s) {
sort(s.begin(),s.end());
int maxx=0;
for(int i=0;i<s.size();i++)
{
int cnt=0,tepsum=0;
for(int j=i;j<s.size();j++)
{
cnt++;
tepsum+=cnt*s[j];
}
maxx=max(maxx,tepsum);
}
return maxx;
}
};