我的代码:
#include<bits/stdc++.h>
using namespace std;
bool b[1000][1000]={0};
int main(){
int n,m,k,x,y,sum=0;
cin>>n>>m>>k;
memset(b,0,sizeof(b));
for(int i=1;i<=m;i++){
cin>>x>>y;
b[x][y]=1;
b[x+1][y+1]=1;
b[x+1][y-1]=1;
b[x-1][y+1]=1;
b[x-1][y-1]=1;
b[x+1][y]=1;
b[x+2][y]=1;
b[x-1][y]=1;
b[x-2][y]=1;
b[x][y+1]=1;
b[x][y+2]=1;
b[x][y-1]=1;
b[x][y-1]=1;
}
for(int i=1;i<=k;i++){
cin>>x>>y;
b[x+2][y+2]=1;
b[x+2][y+1]=1;
b[x+2][y]=1;
b[x+2][y-1]=1;
b[x+2][y-2]=1;
b[x+1][y+2]=1;
b[x+1][y+1]=1;
b[x+1][y]=1;
b[x+1][y-1]=1;
b[x+1][y-2]=1;
b[x][y+2]=1;
b[x][y+1]=1;
b[x][y]=1;
b[x][y-1]=1;
b[x][y-2]=1;
b[x-1][y+2]=1;
b[x-1][y+1]=1;
b[x-1][y]=1;
b[x-1][y-1]=1;
b[x-1][y-2]=1;
b[x-2][y+2]=1;
b[x-2][y+1]=1;
b[x-2][y]=1;
b[x-2][y-1]=1;
b[x-2][y-2]=1;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(b[i][j]==0)sum++;
}
cout<<sum-1;
}
题解代码:
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>//写这么多头文件确实没必要
using namespace std;
int main(){
int n,m,k,i,j,o,p,q,s,ans=0;
cin>>n>>m>>k;
int map[n+5][n+5];
memset(map,0,sizeof(map));
for(i=1;i<=m;i++){
cin>>o>>p;
map[o+2][p]=1;//一个一个找,一个一个亮,暴力时,一定要有顺序,
map[o][p+2]=1;
map[o-2][p]=1;
map[o][p-2]=1;
map[o+1][p]=1;
map[o+1][p+1]=1;
map[o+1][p-1]=1;
map[o][p+1]=1;
map[o][p]=1;
map[o][p-1]=1;
map[o-1][p]=1;
map[o-1][p+1]=1;
map[o-1][p-1]=1;
}
for(i=1;i<=k;i++){
cin>>q>>s;
map[q-2][s-2]=1;
map[q-2][s-1]=1;
map[q-2][s]=1;
map[q-2][s+1]=1;
map[q-2][s+2]=1;
map[q-1][s-2]=1;
map[q-1][s-1]=1;
map[q-1][s]=1;
map[q-1][s+1]=1;
map[q-1][s+2]=1;
map[q][s-2]=1;
map[q][s-1]=1;
map[q][s]=1;
map[q][s+1]=1;
map[q][s+2]=1;
map[q+1][s-2]=1;
map[q+1][s-1]=1;
map[q+1][s]=1;
map[q+1][s+1]=1;
map[q+1][s+2]=1;
map[q+2][s-2]=1;
map[q+2][s-1]=1;
map[q+2][s]=1;
map[q+2][s+1]=1;
map[q+2][s+2]=1;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(map[i][j]==0)ans++;
}
}
cout<<ans;//搞定
return 0;
}