Pagini recente » Cod sursa (job #927225) | Cod sursa (job #3005717) | Cod sursa (job #568366) | Cod sursa (job #387022) | Cod sursa (job #998138)
Cod sursa(job #998138)
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int NMAX = 1010;
int M, N, Freq[30][NMAX][NMAX], FreqV[30], Ans;
char S[NMAX];
int main()
{
freopen("matrix.in", "r", stdin);
freopen("matrix.out", "w", stdout);
scanf("%i %i\n", &M, &N);
for(int i = 1; i <= M; ++ i)
{
gets(S + 1);
for(int j = 1; j <= M; ++ j)
for(int k = 0; k < 26; ++ k)
Freq[k][i][j] = (S[j] == 'a' + k) + Freq[k][i - 1][j] + Freq[k][i][j - 1] - Freq[k][i - 1][j - 1];
}
for(int i = 1; i <= N; ++ i)
{
gets(S + 1);
for(int j = 1; j <= N; ++ j)
FreqV[ S[j] - 'a' ] ++;
}
for(int i = N; i <= M; ++ i)
for(int j = N; j <= M; ++ j)
{
bool OK = 1;
for(int k = 0; k < 26 && OK; ++ k)
if(FreqV[k] != Freq[k][i][j] - Freq[k][i - N][j] - Freq[k][i][j - N] + Freq[k][i - N][j - N])
OK = 0;
Ans += OK;
}
printf("%i\n", Ans);
return 0;
}