查看原帖
38183
sy_whwh楼主2020/7/30 11:22
#include<cstdio>
int sj[101][101]={0};
int n,m,k,x,y,ans=0;

void js()//计算没有光或物体的坐标有几个 
{
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)	
			if (sj[i][j]==0)
				ans++;					
}
void hb(int x,int y)//火把覆盖的坐标 
{
	int xy[12][12]={{-2,0},{-1,0},{-1,1},{0,1},{0,2},{1,1},{1,0},{2,0},{1,-1},{0,-1},{0,-2},{-1,-1}};
	int xx,yy;
	for(int i=0;i<12;i++)
		{
			xx=x+xy[i][0];
			yy=y+xy[i][1];
			if (xx>0 && yy>0 && xx<=n && yy<=n && sj[xx][yy]==0)
				sj[xx][yy]=1;
				
		}
}
void ys(int x,int y)//莹石覆盖的坐标 
{
	int xx=x-2;
	int yy=y-2;
	for (int i=xx;i<=xx+4;i+1)
		for (int j=yy;j<=yy+4;j+1)
			{
				if (i>0 && j>0 && i<=n && j<=n && sj[i][j]==0)
					sj[i][j]=1;
			}
}
int main ()
{
	scanf ("%d %d %d",&n,&m,&k);
	while(m)
	{
		scanf("%d %d",&x,&y);
		sj[x][y]=1;
		hb(x,y);
		m--;
	}
	while(k)
	{
		scanf("%d %d",&x,&y);
		sj[x][y]=1;
		ys(x,y);
		k--;
	}
	js();
	printf ("%d",ans);
}

本题程序超时了请教老师同学有无方法修改

2020/7/30 11:22
加载中...