Pagini recente » Cod sursa (job #2578222) | Cod sursa (job #618033) | Cod sursa (job #872917) | Cod sursa (job #2886791) | Cod sursa (job #581216)
Cod sursa(job #581216)
# include <cstdio>
# include <cstring>
using namespace std;
int n, m, sol;
int f[26], g[26], a[1001][1001];
void read () {
char cit;
std :: freopen ( "matrix.in", "rt", stdin );
scanf ( "%d%d", &n, &m );
for ( int i = 1; i <= n; ++i )
for ( int j = 1; j <= n; ++j ) {
scanf ( " %c", &cit );
a[i][j] = cit;
}
for ( int i = 1; i <= m; ++i )
for ( int j = 1; j <= m; ++j ) {
scanf ( " %c", &cit );
++f[cit - 'a'];
}
}
void write () {
std :: freopen ( "matrix.out", "wt", stdout );
printf ( "%d\n", sol );
}
int main () {
read ();
for ( int vf = n - m + 1, i = 1; i <= vf; ++i ) {
for ( int j = 1; j <= vf; ++j ) {
if ( !f[ a[i][j] - 'a' ] ) continue;
memset ( g, 0, sizeof g );
for ( int vf1 = i + m, vf2 = j + m, k = i; k < vf1; ++k ) {
for ( int l = j; l < vf2; ++l ) {
++g[ a[k][l] - 'a' ];
}
}
int ok = 1;
for ( int k = 0; k < 26; ++k )
if ( f[k] != g[k] ) {
ok = 0;
break;
}
if ( ok ) ++sol;
}
}
write ();
return 0;
}