求调,这道题卡一个月了
查看原帖
求调,这道题卡一个月了
1041666
Jerry555楼主2024/6/1 19:42
#include <iostream>
using namespace std;
#define yjif(x,y) if(!yj(x,y,n))
bool yj(int x,int y,int n){
    if(x<1 or y<1 or x>n or y>n)return false;
    else return true;
}
int main(){
    int n,m,k,x,y;
    cin >> n >> m >> k;
    char Map[n][n];
    for(int i=0;i<n;i++)for(int j=0;j<n;j++)Map[i][j]='d';
    for(int i=0;i<m;i++){
        cin >> x >>y;
        x-=1,y-=1;
        Map[x][y]='b';
        yjif(x,y-1)Map[x][y-1]='b';
        yjif(x,y-2)Map[x][y-2]='b';
        yjif(x,y+1)Map[x][y+1]='b';
        yjif(x,y+2)Map[x][y+2]='b';
        yjif(x-1,y)Map[x-1][y]='b';
        yjif(x-2,y)Map[x-2][y]='b';
        yjif(x+1,y)Map[x+1][y]='b';
        yjif(x+2,y)Map[x+2][y]='b';
        yjif(x-1,y-1)Map[x-1][y-1]='b';
        yjif(x+1,y+1)Map[x+1][y+1]='b';
        yjif(x+1,y-1)Map[x+1][y-1]='b';
        yjif(x-1,y+1)Map[x-1][y+1]='b';
    }
    for(int i=0;i<k;i++){
        cin >>x >> y;
        x-=1,y-=1;
        for(int j=x-2;j<=x+2;j++)for(int k=y-2;k<=y+2;k++)yjif(j,k)Map[j][k]='b';
    }
    int sum=0;
    for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(Map[i][j]=='d')sum++;
    cout << sum;
}
2024/6/1 19:42
加载中...