80求助大佬!第二点WA,实际输出2
查看原帖
80求助大佬!第二点WA,实际输出2
1048073
CKchen楼主2023/8/1 18:57
#include<iostream>
using namespace std;

int main(){
	
	int n,x,y,m,k,cnt=0;
	cin>>n>>m>>k;//输入
	int a[n+9][n+9];//开大范围防越界
	
	//初始化每一个格子为1
	for(int i=3;i<=n+2;i++){
		for(int j=3;j<=n+2;j++){
			a[i][j]=1;
		}
	}
	
	//将火把点亮部分赋值为0
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		for(int j=0;j<5;j++){
			a[x+2][y+j]=0;	//第三横行	
		}
		for(int j=0;j<5;j++){
			a[x+j][y+2]=0;	//第三纵行
		}
		for(int j=1;j<=3;j++){
			a[x+j][y+1]=0;	//第二纵行
		}
		for(int j=0;j<3;j++){
			a[x+j][y+3]=0;	//第四纵行
		}
	}
	
	
	//将萤石点亮部分赋值为0
	if(k!=0){
		for(int i=1;i<=k;i++){
			cin>>x>>y;//循环读取
			for(int j=0;j<5;j++){
				for(int t=0;t<5;t++){
					a[x+j][y+t]=0;
				}		
			}
		}
	}
	
	//遍历计数没有点亮的部分
	for(int i=3;i<=n+2;i++){
		for(int j=3;j<=n+2;j++){
			if(a[i][j]==1){
				cnt++;
			}
		}
	}
	
	//输出未点亮格子数
	printf("%d",cnt);
	
	
	return 0;
}
第二检查点,应输出3,实际输出2.
8 22 0
1 1
1 2
1 3
1 4
1 5
1 6
3 1
3 2
3 3
3 4
3 5
3 6
5 1
5 2
5 3
5 4
5 5
5 6
7 1
7 3
7 5
7 7
2023/8/1 18:57
加载中...