找不同,玄关
查看原帖
找不同,玄关
1621000
_Xiaoyao_楼主2024/12/28 15:41

我的代码:

#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;
}
2024/12/28 15:41
加载中...