最长全1串
2019-05-19 本文已影响0人
cherryleechen
问题描述
给你一个长度为的01串,定义“答案”=该串中最长的连续1的长度。现有K次机会将其中的某个0改为1,现在求最大可能“答案”。
解题思路
遍历这个数,将为0的位置push进数组vec中,只考虑数组中存放的这些位置。
程序实现
#include<bits/stdc++.h>
using namespace std;
vector<int> vec;
int main(){
int n,k,x;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>x;
if(x==0) vec.push_back(i);
}
int maxLen=vec[k]-1; //初始化maxLen为vec[k]-1
for(int i=k+1;i<vec.size();i++){
//vec[i]-vec[i-k-1]-1就是将i-k-1到i之间的0变为1的长度
maxLen=max(maxLen,vec[i]-vec[i-k-1]-1);
}
cout<<maxLen<<endl;
return 0;
}