問題描述
給你一個長度為的01串,定義“答案”=該串中最長的連續(xù)1的長度。現(xiàn)有K次機會將其中的某個0改為1,現(xiàn)在求最大可能“答案”。
解題思路
遍歷這個數,將為0的位置push進數組vec中,只考慮數組中存放的這些位置。
程序實現(xiàn)
#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變?yōu)?的長度
maxLen=max(maxLen,vec[i]-vec[i-k-1]-1);
}
cout<<maxLen<<endl;
return 0;
}