20
5 5
#####
#...#
#...#
#....
.....
3 3
###
###
###
5 5
#####
#####
#####
#####
#####
<27002 bytes omitted>
用户输出
5
25
25
25
22
37
5
27
7
57
4
9
0
1
1389
895
915
1
1079
1058
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#21726 | #1010. J. 团队配置,新奇的面试题 | Accepted | 100 | 13 ms | 260 K | C++ / 922 B | 电类904-穆琳杰 | 2020-02-09 23:02:58 |
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char a[50][50], b[50][50];
bool flag;
int sum = 0;
int main() {
int T;
cin >> T;
for (int i = 1; i <= T; i++) {
sum = 0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
int M, N;
scanf("%d%d", &N, &M);
for (int i = 0; i < N; i++) cin >> a[i];
int m, n, mm, nn;
scanf("%d%d", &n, &m);
mm = (m - 1) / 2;
nn = (n - 1) / 2; //计算员工地图的中点坐标
for (int i = 0; i < n; i++) cin >> b[i];
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++) //依次中心坐标在原地图的各个点;
{
flag = 1; //归1
for (int s = -nn; s <= nn; s++)
for (int k = -mm; k <= mm; k++) //把员工地图的各个点同原图比较
if ((i + s) >= 0 && (i + s) < N && (j + k) >= 0 && (j + k) < M)
if (b[nn + s][mm + k] == '#' && a[i + s][j + k] == '#') //只考虑落在原地图上的点
flag = 0;
if (flag)
sum++;
}
printf("%d\n", sum);
}
return 0;
}