求调 WA80分
查看原帖
求调 WA80分
1802886
luo2031楼主2025/8/29 08:06
#include<iostream>
using namespace std;
int main()
{
	int n,m,k,i,j,ans[101][101],wer=0;
	int dx1[13]={-2,-1,-1,-1,0,0,0,0,0,1,1,1,2},dy1[13]={0,-1,0,1,-2,-1,0,1,2,-1,0,1,0};
	int dx2[25]={-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2},dy2[25]={-2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2,-2,-1,0,1,2};
	cin>>n>>m>>k;
	for(int p=1;p<=m;p++)
	{
		cin>>i>>j;
		for(int u=0;u<=12;u++)
		{
			int a=i+dx1[u];
			int b=j+dy1[u];
			if(a>0&&a<=n&&b>0&&b<=n)ans[a][b]=1;
		}
	}
	for(int p=1;p<=k;p++)
	{
		cin>>i>>j;
		for(int u=0;u<=24;u++)
		{
			int a=i+dx2[u];
			int b=j+dy2[u];
			if(a>0&&a<=n&&b>0&&b<=n)ans[a][b]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(ans[i][j]==0)wer++;
		}
	}
	cout<<wer;
}

另外 @yuhe2012,你的代码可以改成 (e.g.)

if(x-2>=0&&x-2<n&&y>=0&&y<n) {
			a[x-2][y]=1;
		}

因为你开的n×nn\times n,输nn会越界。

2025/8/29 08:06
加载中...