救命 全WA了.....
查看原帖
救命 全WA了.....
1034242
RingTouSou楼主2023/9/12 23:46
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int a[101][101]={0};//将所有的暗赋值为0 
void d1(int x,int y)
{
	for(int dx = -2;dx<=2;dx++)
	{
		for(int dy=-2;dy<=2;dy++)
		{
			int nx = x+dx,ny=y+dy;
			if(0<=nx&&nx<n&&0<=ny&&ny<n&&a[nx][ny]==0)
			{
				a[nx][ny]=1;
			}
		}
	}
}
void d2(int x,int y)
{
    int dx[]={-1,-2,1,2,0,0,0,0};
	int dy[]={0,0,0,0,-1,-2,1,2};
	int d=0;
	for(int i=0;i<8;i++)
	{
		int a1 = x+dx[d];
	    int b = y+dy[d];
	    d++;
	    if(0<=a1&&a1<n&&0<=b&&b<n&&a[a1][b]==0)
	    {
	    	a[a1][b]=1;
		}
	}
	
}
int main()
{

	cin>>n>>m>>k;

	vector<pair<int,int>> p1;  //这里火把
	for(int i=0;i<m;i++)
	{
		int start,end;
		cin>>start>>end;
		p1.push_back(make_pair(start,end));
		a[p1[i].first][p1[i].second]= 2;  // 2是火把
	}
	vector<pair<int,int>> p2;  //这里萤石
	for(int i=0;i<k;i++)
	{
		int start,end;
		cin>>start>>end;
		p2.push_back(make_pair(start,end));
		a[p2[i].first][p2[i].second]= 3;  // 3是萤石
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(a[i][j]==2)
			{
				d1(i,j);
			}
			if(a[i][j]==3)
			{
				d2(i,j);
			}
		}
	}
    int* begin = &a[0][0];
    int* end = &a[n-1][n-1] + 1;
  
    int num = count(begin, end, 0);
	cout<<num;
	
	return 0;
}
2023/9/12 23:46
加载中...