Pagini recente » Cod sursa (job #456399) | Cod sursa (job #1845187) | Cod sursa (job #71895) | Cod sursa (job #1669201) | Cod sursa (job #1334371)
#include<cstdio>
#include<algorithm>
#include<cstring>
#define Nmax 1001
using namespace std;
int n,m,i,j,l,p,q,nr,sol;
int a[Nmax][Nmax];
bool ok[Nmax][Nmax];
int main()
{
char v[Nmax][Nmax],s[Nmax];
int w[27];
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d %d\n",&n,&m);
for (l=0;l<=26;l++) w[l]=0;
memset(ok,1,sizeof(ok));
for (i=1;i<=n;i++)
gets(v[i]+1);
for (i=1;i<=m;i++)
{
gets(s+1);
for (j=1;j<=m;j++)
w[s[j]-'a']++;
}
for (l=0;l<26;l++)
{
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
if (v[i][j]-'a'==l)
a[i][j]++;
}
for (i=m;i<=n;i++)
for (j=m;j<=n;j++)
if (ok[i][j] && a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m]==w[l])
{if (l==25) sol++;}
else ok[i][j]=0;
}
printf("%d",sol);
return 0;
}