40分,2个RE,1个WA

P1789 【Mc生存】插火把

x和y会越界,判断一下
by zyc230955zyw @ 2024-02-13 18:19:06


看一下我的样例代码 ```cpp #include<iostream> using namespace std; const int N = 1e2 + 10; int nums[N][N]; int main() { int n = 0,m = 0,k = 0,x = 0,y = 0; int s1 = 0,s2 = 0,e1 = 0,e2 = 0; int cnt = 0; cin >> n >> m >> k; for (int i = 0;i < m;i++) { cin >> x >> y; x -= 1; y -= 1; s1 = (x - 1 < 0)? 0 : x - 1; e1 = (x + 1 > n - 1)? n - 1 : x + 1; s2 = (y - 1 < 0)? 0 : y - 1; e2 = (y + 1 > n - 1)? n - 1 : y + 1; for (int j = s1;j <= e1;j++) { for (int k = s2;k <= e2;k++) { nums[j][k] = 1; } } if (x - 2 >= 0) { nums[x - 2][y] = 1; } if (x + 2 < n) { nums[x + 2][y] = 1; } if (y - 2 >= 0) { nums[x][y - 2] = 1; } if (y + 2 < n) { nums[x][y + 2] = 1; } } for (int i = 0;i < k;i++) { cin >> x >> y; s1 = (x - 2 < 1)? 1 : x - 2; e1 = (x + 2 > n)? n : x + 2; s2 = (y - 2 < 1)? 1 : y - 2; e2 = (y + 2 > n)? n : y + 2; for (int j = s1;j <= e1;j++) { for (int k = s2;k <= e2;k++) { nums[j][k] = 1; } } } for (int i = 0;i < n;i++) { for (int j = 0;j < n;j++) { if(nums[i][j] == 0) { cnt++; } } } cout << cnt << endl; return 0; } ```
by Wuenhao @ 2024-02-24 20:39:16


|