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