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