这道题我们可以将所有的0都删除,然后像最大字段和一样统计过程中的最大分值。首先,先统计0,1的数量算出初始分值,然后在第一二位如果没有0,而且0还存在那么我们就删除第二个1,来使分值最大化。
using namespace std;
int main()
{
string s;
cin>>s;
map<int,int>v;
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
v[0]++;
}
else{
v[1]++;
}
}
int cur=v[1]-v[0],maxn=cur;
while(v[0]>0){
if(s[0]=='0'){
s.erase(s.begin());
v[0]--;
cur++;
}
else if(s[1]=='0'){
s.erase(s.begin()+1);
v[0]--;
cur++;
}
else{
s.erase(s.begin()+1);
cur--;
}
maxn=max(maxn,cur);
}
cout<<maxn<<endl;
}

京公网安备 11010502036488号