0
已解决
张皓轩
中级光能
中级光能
有一个数组A,数组元素只有0和1,我们最多可以将K个值从0变成1.请你输出仅包含1的最长(连续)数组的长度。
80分超时代码:
#include<iostream>
#include<cstdio>
#pragma GCC optimize(3)
using namespace std;
int a[10000001],l,k,cnt,p=1,ans,maxn;
int main(){
cin>>l>>k;
for(int i=1;i<=l;i++){
scanf("%d",&a[i]);
}
while(true){
int t=p;
while(p<=l && (a[p]==1 || cnt<k)){
if(a[p]!=1){
cnt++;
}
ans++;
p++;
}
if(p>l){
break;
}
cnt=0;
maxn=max(maxn,ans);
ans=0;
p=t+1;
}
cout<<maxn;
}
求大佬指点
1
已采纳
王文博
缔造者之神
缔造者之神
int a[4];
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4);
cout<<a[1]/f1(a[1],a[3])<<"/"<<a[3]/f1(a[1],a[3]);
f1就是辗转相除法的那个函数(=gcd),应该都懂
望采纳!
王文博在2021-08-07 18:07:46追加了内容
看错题了!抱歉
王文博在2021-08-07 18:08:53追加了内容
思路:回溯,尝试将每个0变成1,一旦将k个0变成1,或者到达字符串的结尾,就开始统计连续的1的子数组的最大长度。
1