我的测试结果是1 4 5测试点AC,2 3测试点RE 我的代码
/*X增加是增加行
Y增加是增加列
*/
#include <iostream>
int hb[20000][20000];
int main() {
int n, m, k, x, y, ans = 0;
std::cin >> n >> m >> k;
for (int i = 2; i <= m + 1; i++) {
std::cin >> x >> y;
hb[x][y] = 2;
hb[x + 1][y] = 1;
hb[x + 2][y] = 1;
hb[x - 1][y] = 1;
hb[x - 2][y] = 1;
hb[x][y + 1] = 1;
hb[x][y + 2] = 1;
hb[x][y - 1] = 1;
hb[x][y - 2] = 1;
hb[x - 1][y - 1] = 1;
hb[x - 1][y + 1] = 1;
hb[x + 1][y - 1] = 1;
hb[x + 1][y + 1] = 1;
}
for (int i = m + 2; i <= m + k + 1; i++) {
std::cin >> x >> y;
for (int j = x - 2; j <= x + 2; j++) {
for (int k = y - 2; k <= y + 2; k++) {
hb[j][k] = 1;
}
}
hb[x][y] = 2;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (hb[i][j] == 0) {
ans++;
}
}
}
std::cout << ans << "\n";
return 0;
}
然后我去看了评测记录,发现有个跟我思路一样的,这是他的代码
#include <iostream>
using namespace std;
int a[105][105], ans;
int main() {
int n, m, k, x, y;
cin >> n >> m >> k;
while (m--) {
cin >> x >> y;
a[x][y] = 1;
for (int i = 1; i <= 2; i++) {
a[x - i][y] = 1;
a[x][y + i] = 1;
a[x][y - i] = 1;
a[x + i][y] = 1;
}
a[x - 1][y - 1] = 1;
a[x - 1][y + 1] = 1;
a[x + 1][y - 1] = 1;
a[x + 1][y + 1] = 1;
}
while (k--) {
cin >> x >> y;
x = x - 2, y = y - 2;
for (int i = x; i < x + 5; i++) {
for (int j = y; j < y + 5; j++) {
a[i][j] = 1;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (!a[i][j]) ans++;
// cout<<a[i][j]<<' ';
}
//cout<<endl;
}
cout << ans << endl;
return 0;
}
我和他的代码都在VSC测试了一遍,他的代码也跟我的一样,在第二个测试点输入的时候数组炸了,而他却AC了,而我那个测试点却RE了,有大佬看看我的代码有啥问题不?