中兴笔试题二

#include<stdio.h>
#include<string.h>
int len,n,m;
char s[20001];
int max;
int ma[20001];

int maxstr()
{
    int maxs=-999999;
    int sum=0;
    int i=0;
    for(i=0;i<len;i++)
    {
       if(s[i]!='0')
            sum++;
       else
       {
           if(maxs<sum)
                maxs=sum;
           sum=0;
       }
    }
    if(maxs<sum)
            maxs=sum;
     return maxs;
}


void dfs(int step,int weizhi)
{
    if(step==m)
    {
        int lens=maxstr();
        ma[lens]++;
        return ;
    }
    for(int i=weizhi;i<len;i++)
    {
        if(s[i]=='0')
        {
            s[i]='1';
            dfs(step+1,i);
            s[i]='0';
        }
    }
}

int main()
{
    while(~scanf("%d%d%s",&n,&m,s))
    {
        len=strlen(s);
        memset(ma,0,sizeof(ma));
        dfs(0,0);
        //puts(">>>>>>");
        max=-9999999;
        for(int i=0;i<len;i++)
            if(ma[i]>max)
                max=ma[i];
        printf("%d
",max);
        memset(s,0,sizeof(s));
    }
}

/*
7 1
1010101
*/
原文地址:https://www.cnblogs.com/wft1990/p/7457930.html