贪心,从现在的位置+d开始搜索’1’,如果搜索到了就跳上去,如果没搜索到就失败,如果最后跳到了,就成功,输出跳的次数
#include <iostream>
#include <string>
#define min(_x,_y) ((_x<_y)?(_x):(_y))
using namespace std;
string lilies;
int main(){
int now=0,j,n,d,cnt=0,flag;
cin>>n>>d>>lilies;
while(now!=n-1){
flag=1;
for(j=min(now+d,n-1);j-now;j--){
if(lilies[j]-'0'){
flag=0;cnt++;now=j;
break;
}
}
if(flag){cout<<-1;break;}
}
if(now==n-1)cout<<cnt;
}