题目:
分析:
很简单,题目转化一下就ok了。代码内有详细标注
代码:
class Solution {
public:
int maxSatisfied(vector<int>& c, vector<int>& g, int X) {
if(X>=c.size())
return accumulate(c.begin(),c.end(),0);
int all=0;
//变化c,不生气的位置直接变为0,并计算不生气的总和,
for(int i=0;i<c.size();i++)
{
if(g[i]==0) {
all+=c[i];
c[i]=0;
}
}
//问题转化为求c中连续X个元素的最大值
int maxx=0;
for(int i=0;i<X;i++)
{
maxx+=c[i];
}
int tt=maxx;
cout<<all<<endl;
for(int i=0;i<c.size();i++) cout<<c[i]<<' ';
for(int i=X;i<c.size();i++)
{
tt=tt+c[i]-c[i-X];
maxx=max(maxx,tt);
}
return maxx+all;
}
};