本題是要求最多的鳥的數量,不一定在最後;
所以先把滿足題意的能配對的先確定下來;
然後要開始遍歷查找最大,在便利是在時間段n中進行的,把這個時間段能配對的鳥的數量,和雄鳥沒配對的數量(因爲每到飛走的時間)就是這個時間段總時間;
#include"stdio.h"
#include"string.h"
int a[10006],b[10006];
char str[10006];
int main()
{
int m,n,i,j,k,sum,max,h;
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&m,&n);
memset(b,0,sizeof(b));
scanf("%s",str);
for(i=0;i<m;i++)
a[i]=str[i]-'0';
for(i=0;i<m;i++)
{
if(a[i]==1)
{
for(j=i+1;j<=i+n&&j<m;j++)
if(a[j]==2&&b[j]==0)
{
b[i]=1;
b[j]=1;
break;
}
}
}
sum=0;max=0;
for(i=0;i<m;i++)
{
h=0;
if(b[i]==1)
sum++;
if(i-n<0)
j=0;
else
j=i-n+1;
for(;j<=i;j++)
{
if(a[j]==1&&b[j]==0)
h++;
}
if(max<h+sum)
max=h+sum;
}
printf("%d\n",max);
}
return 0;
}