自己写了一遍暴力过了,然后看题解里大佬的思路由写了一遍,但是没过,不知道哪里写错了,请大佬们帮忙看看
代码:
#include <iostream>
#include <cmath>
using namespace std;
int n, m, k, a[102][102], cnt;
int cb(int x, int y)
{
if (x < 1 || y < 1 || x > n || y > n)
return 0;
return 1;
}
int main()
{
cin >> n >> m >> k;
for (int i = 1; i <= m + k; i++) // 这里其实可以把火把和萤石放到一起
{
int x, y;
cin >> x >> y;
for (int j = -2; j <= 2; j++)
{
for (int k = -2; k <= 2; k++)
{
if ((i > m || abs(j) + abs(k) <= 2) && cb(x + j, y + j)) // 如果是萤石(i > m)或者 j + k 的绝对值不超过 2,就把该格变为 1
a[x + j][y + j] = 1;
}
}
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) if (a[i][j] == 0) cnt++; // 统计没被点亮的方格数
cout << cnt << endl;
return 0;
}