Pagini recente » Cod sursa (job #2580719) | Cod sursa (job #1638307) | Cod sursa (job #1854632) | Cod sursa (job #1036547) | Cod sursa (job #581227)
Cod sursa(job #581227)
//# include <cstdio>
# include <fstream>
# include <cstring>
using namespace std;
int n, m, sol;
int f[26], g[26], a[1001][1001];
char x[1001];
void read () {
char cit;
//std :: freopen ( "matrix.in", "rt", stdin );
//scanf ( " %d %d ", &n, &m );
std :: ifstream fin ( "matrix.in" );
fin >> n >> m;
for ( int i = 1; i <= n; ++i ) {
fin >> x;
for ( int j = 1; j <= n; ++j )
a[i][j] = x[j-1];
}
for ( int i = 1; i <= m; ++i )
for ( int j = 1; j <= m; ++j ) {
//scanf ( " %c", &cit );
fin >> cit;
++f[cit - 'a'];
}
}
void write () {
//std :: freopen ( "matrix.out", "wt", stdout );
//printf ( "%d\n", sol );
std :: ofstream fout ( "matrix.out" );
fout << sol << '\n';
}
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;
}