Pagini recente » Cod sursa (job #2670035) | Cod sursa (job #2740384) | Cod sursa (job #1401909) | Cod sursa (job #2982839) | Cod sursa (job #274114)
Cod sursa(job #274114)
#include <iostream.h>
#include <fstream.h>
#include <string.h>
char x[1002][1002],nr1[255],nr2[255],nrante[255];
int egal(char x[], char y[])
{
for(int i=0;i<255;i++)
if(x[i]!=y[i])
return 0;
return 1;
}
int main()
{
char y[1002][1002],sir[1002];
int n,m,i,j,l,c,count=0;
fstream f("matrix.in",ios::in), g("matrix.out",ios::out);
f>>m>>n;
f.get();
for(i=1;i<=m;i++)
{ f.getline(sir,1000);
for(j=0;j<strlen(sir);j++)
x[i][j+1]=sir[j];
}
for(i=1;i<=n;i++)
{ f.getline(sir,1000);
for(j=0;j<strlen(sir);j++)
y[i][j+1]=sir[j];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
nr2[y[i][j]]++;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
nrante[x[i][j]]++;
for(l=1;l<=m-n+1;l++)
{
for(i=0;i<255;i++)
nr1[i]=nrante[i];
if(l>1)
{
for(i=1;i<=n;i++)
nr1[x[l-1][i]]--;
for(i=1;i<=n;i++)
nr1[x[l+n-1][i]]++;
}
if(egal(nr1,nr2))
count++;
for(c=2;c<=m-n+1;c++)
{
for(i=l;i<=l+n-1;i++)
nr1[x[i][c-1]]--;
for(i=l;i<=l+n-1;i++)
nr1[x[i][c+n-1]]++;
if(egal(nr1,nr2))
count++;
}
for(i=0;i<255;i++)
nrante[i]=nr1[i];
}
g<<count;
f.close();
g.close();
return 0;
}