为什么才40分呢???
查看原帖
为什么才40分呢???
333298
lijiawang123楼主2021/1/1 20:00
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>

using namespace std;

int main() {
    //几乘几的方阵, m:火把个数  ,k:萤石个数
    int n, m, k;
    cin >> n >> m >> k;
    int a[n + 1][n + 1] = {};

    //初始化火把
    for (int i = 0; i < m; i++) {
        int x, y;
        cin >> x >> y;
        a[x][y] = 1;
    }

    //初始化萤石
    for (int i = 0; i < k; i++) {
        int o, p;
        cin >> o >> p;
        a[o][p] = 2;
    }


    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (a[i][j] == 1) {
                a[i - 1][j] = 3;
                a[i - 2][j] = 3;
                a[i + 1][j] = 3;
                a[i + 2][j] = 3;
                a[i - 1][j - 1] = 3;
                a[i + 1][j - 1] = 3;
                a[i + 1][j + 1] = 3;
                a[i - 1][j + 1] = 3;
                a[i][j - 1] = 3;
                a[i][j - 2] = 3;
                a[i][j + 1] = 3;
                a[i][j + 2] = 3;
            } else if (a[i][j] == 2) {
                for (int l = -2; l < 3; l++) {
                    for (int z = -2; z < 3; z++) {
                        a[i + z][j + l] = 3;
                    }
                }
                a[i][j] = 2;
            }
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << a[i][j];
        }
        cout << endl;
    }

    int count = 0;


    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (a[i][j] == 0) {
                count++;
            }
        }
    }

    printf("%d\n\n", count);


}



2021/1/1 20:00
加载中...