//2016-04暴力解法,写得好丑
#include <iostream>
using namespace std;
const int p = 50;
int N, M, n, m;
char b[p][p], s[p][p];
bool bb[p][p];
int mine = -1;
int cnt = 0;
int a = 0;
int mx[4] = { 0,0,1,1 }, my[4] = { 0,1,0,1 };
//判断以(x,y)为顶点的大图是否能切
bool check(int x, int y)
{
if (y + m - 1 > M || x + n - 1 > N)//出界
return false;
if (bb[x][y])
return false;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (b[x + mx[i]][y + my[j]] != s[1 + mx[i]][1 + my[j]])
return false;
}
}
return true;
}
int main()
{
cin >> N >> M;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= M; j++)
cin >> b[i][j];
}
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
cin >> s[i][j];
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= M; j++)
{
if (check(i, j))
{
for (int a = 0; a < 4; a++)
{
for (int b = 0; b < 4; b++)
{
bb[i + mx[a]][j + my[b]] = true;
}
}
cnt++;
}
}
}
cout << cnt << endl;
}
hdu笔试2017-03模板
最新推荐文章于 2024-07-25 21:43:46 发布