啊,不知道为什么寄了QAQ

P1789 【Mc生存】插火把

额等等,k忘了等于零了,再试试。。
by startlearning @ 2023-12-10 22:16:12


行叭,过了,一个是右边界和下边界少了等于号,导致最右和最下丢了俩1..一个就是k没看0;```cpp #include<iostream> using namespace std; int main() { //分别输入矩阵长度,火把数,萤石数 int n, m, k; cin >> n >> m >> k; // 动态二维数组创立 int** p = new int* [n]; for (int i = 0; i < n; i++) p[i] = new int[n]; //先把所有部位定成暗(0); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) p[i][j] = 0; //分别考虑火把和萤石的影响 for (int i = 0; i < m; i++) { int x, y; cin >> x >> y; for (int i = y - 1 - 2; i <= y - 1 + 2; i++) if (i >= 0 && i < n)p[i][x-1] = 1; for (int j = x - 1 - 2; j <= x - 1 + 2; j++) if (j >= 0 && j < n)p[y - 1][j] = 1; if (x - 2 >= 0 && y - 2 >= 0)p[y - 2][x - 2] = 1; if (x - 2 >= 0 && y < n)p[y][x - 2] = 1; if (x <n && y - 2 >= 0)p[y - 2][x] = 1; if (x <n && y <n)p[y][x] = 1; } if(k) { for (int i = 0; i < k; i++) { int x, y; cin >> y >> x; for(int j=x-1-2;j<=x-1+2;j++) for(int f=y-1-2;f<=y-1+2;f++) if(j>=0&&j<=n-1&&f>=0&&f<=n-1)p[f][j] = 1; } } int num = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (p[i][j] == 0)num++; cout << num << endl; return 0; } ```
by startlearning @ 2023-12-10 22:22:21


|