Pagini recente » Cod sursa (job #1337065) | Cod sursa (job #1029439) | Cod sursa (job #1138996) | Cod sursa (job #1278489) | Cod sursa (job #3619)
Cod sursa(job #3619)
#include<stdio.h>
#define fin "matrix.in"
#define fout "matrix.out"
#define NMAX 1001
char map[NMAX][NMAX],vir[NMAX][NMAX];
int sol,n,m,v[NMAX][NMAX][27],v2[27];
FILE *in,*out;
int main() {
int i,j,k,tmp[27];
in=fopen(fin,"r"); out=fopen(fout,"w");
fscanf(in,"%i%i",&n,&m);
for (i=1;i<=n;++i) {
fgetc(in);
for (j=1;j<=n;++j) {
map[i][j]=fgetc(in);
map[i][j]-='a';
}
}
for (i=1;i<=m;++i) {
fgetc(in);
for (j=1;j<=m;++j) {
vir[i][j]=fgetc(in);
vir[i][j]-='a';
v2[vir[i][j]]++;
}
}
for (i=1;i<=n;++i)
for (j=1;j<=n;++j) {
for (k=0;k<=26;++k) v[i][j][k]=v[i][j][k]+v[i-1][j][k]+v[i][j-1][k];
for (k=0;k<=26;++k) {
v[i][j][k]=v[i][j][k]-v[i-1][j-1][k];
tmp[k]=0;
}
v[i][j][map[i][j]]++;
if (i>=m && j>=m) {
for (k=0;k<=26;++k)
tmp[k]=v[i][j][k]-v[i-m][j][k]-v[i][j-m][k]+v[i-m][j-m][k];
for (k=0;k<=26 && tmp[k]==v2[k];++k);
if (k>26) sol++;
}
}
/*for (i=1;i<=n;++i)
for (j=1;j<=n;++j) {
for (k=0;k<=4;++k) fprintf(out,"%i ",v[i][j][k]);
fprintf(out,"\n");
}*/
fprintf(out,"%i\n",sol);
fclose(in); fclose(out);
return 0;
}