暴力一下,用尺取法。
#include<bits/stdc++.h>
using namespace std;
char s[2005][2005];
int a[2005][2005];
int d;
int main(){
int n,m,k,ans=0;
cin>>n>>m>>k;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
scanf("%s",s[i]+1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(s[i][j]=='.')a[i][j]=1;
}
}
for(int i=1;i<=n;i++)
{
d=0;
for(int j=1;j<=m;j++)
{
d+=a[i][j];
if(j-k>0)
{
d-=a[i][j-k];
}
if(d==k)ans++;
}
}
if(k==1)
{
cout<<ans<<endl;
return 0;
}
for(int j=1;j<=m;j++)
{
d=0;
for(int i=1;i<=n;i++)
{
d+=a[i][j];
if(i-k>0)
{
d-=a[i-k][j];
}
if(d==k)ans++;
}
}
cout<<ans<<endl;
return 0;
}