fzu OJ Problem 2064 找位置

又刷一道水题,地址: http://acm.fzu.edu.cn/problem.php?pid=2064

内容不复述,直接code

#include<stdio.h>
int data[103][103];
int flg_1,flg_2;
//搜索data[i][j] ~ data[i][j+w-1],若符合,返回1;否则返回0,flg_1为最后一个1的位置
int search(int a[],int j,int w)
{
    
int i;
    
for(i=j+w-1;i>=j;i--)
    {
        
if(a[i]!=0)
        {
            flg_1
=i;
            
return 0;
        }
    }
    
return 1;
}
//找出data数据第 i 行data[i][j]之后的第一个1的位置,返回之间的0的个数
int find1behind(int a[],int j,int m)
{
    
int i,cont=0;
    
for(i=0;j+i<=m;j++)
    {
        
if(a[j+i]==0)cont++;
        
else break;
    }
    flg_2
=j+i;
    
return cont;
}
int main()
{
    
int T,N,M,W,i,j,tmp,cont;
    scanf(
"%d",&T);
    
while(T--)
    {
        scanf(
"%d%d%d",&N,&M,&W);
        
for(i=0;i<N;i++)
            
for(j=0;j<M;j++)
                scanf(
"%d",&data[i][j]);
        cont
=0;
        
for(i=0;i<N;i++)
        {
            
for(j=0;j<=M-W;j++)
            {
                tmp
=search(data[i],j,W);
                
if(tmp==0)
                {
                    j
=flg_1;
                }
                
else
                {
                    cont
++;
                    cont
+=find1behind(data[i],j+W,M-1);
                    j
=flg_2;
                }
            }
        }
        printf(
"%d\n",cont);
    }
    
return 0;
}


你可能感兴趣的:(fzu OJ Problem 2064 找位置)