遍历二维数组i和j时取值设定导致不能AC
查看原帖
遍历二维数组i和j时取值设定导致不能AC
729895
Meickol楼主2023/7/26 16:48

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,k,map[105][105]={0},a,b,c,d,ans=0;
	scanf("%d %d %d",&n,&m,&k);
	for(int i=1;i<=m;i++){
		scanf("%d %d",&a,&b);
		map[a][b+2]=1;
		map[a][b+1]=1;
		map[a][b]=1;
		map[a][b-1]=1;
		map[a][b-2]=1;
		map[a-2][b]=1;
		map[a-1][b]=1;
		map[a+1][b]=1;
		map[a+2][b]=1;
		map[a-1][b-1]=1;
		map[a-1][b+1]=1;
		map[a+1][b-1]=1;
		map[a+1][b+1]=1;
	}
	
		for(int i=1;i<=k;i++){
		scanf("%d %d",&c,&d);
		map[c][d+2]=1;
		map[c][d+1]=1;
		map[c][d]=1;
		map[c][d-1]=1;
		map[c][d-2]=1;
		map[c-1][d]=1;
		map[c-1][d-2]=1;
		map[c-1][d-1]=1;
		map[c-1][d+1]=1;
		map[c-1][d+2]=1;
		map[c-2][d]=1;
		map[c-2][d-2]=1;
		map[c-2][d-1]=1;
		map[c-2][d+1]=1;
		map[c-2][d+2]=1;
		map[c+1][d]=1;
		map[c+1][d-2]=1;
		map[c+1][d-1]=1;
		map[c+1][d+2]=1;
		map[c+1][d+1]=1;
		map[c+2][d]=1;
		map[c+2][d-2]=1;
		map[c+2][d-1]=1;
		map[c+2][d+1]=1;
		map[c+2][d+2]=1;
	}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(map[i][j]==0)	ans++;
		}
	}
	printf("%d",ans);
	return 0;
}

80分代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,k,map[105][105]={0},a,b,c,d,ans=0;
	scanf("%d %d %d",&n,&m,&k);
	for(int i=1;i<=m;i++){
		scanf("%d %d",&a,&b);
		map[a][b+2]=1;
		map[a][b+1]=1;
		map[a][b]=1;
		map[a][b-1]=1;
		map[a][b-2]=1;
		map[a-2][b]=1;
		map[a-1][b]=1;
		map[a+1][b]=1;
		map[a+2][b]=1;
		map[a-1][b-1]=1;
		map[a-1][b+1]=1;
		map[a+1][b-1]=1;
		map[a+1][b+1]=1;
	}
	
		for(int i=1;i<=k;i++){
		scanf("%d %d",&c,&d);
		map[c][d+2]=1;
		map[c][d+1]=1;
		map[c][d]=1;
		map[c][d-1]=1;
		map[c][d-2]=1;
		map[c-1][d]=1;
		map[c-1][d-2]=1;
		map[c-1][d-1]=1;
		map[c-1][d+1]=1;
		map[c-1][d+2]=1;
		map[c-2][d]=1;
		map[c-2][d-2]=1;
		map[c-2][d-1]=1;
		map[c-2][d+1]=1;
		map[c-2][d+2]=1;
		map[c+1][d]=1;
		map[c+1][d-2]=1;
		map[c+1][d-1]=1;
		map[c+1][d+2]=1;
		map[c+1][d+1]=1;
		map[c+2][d]=1;
		map[c+2][d-2]=1;
		map[c+2][d-1]=1;
		map[c+2][d+1]=1;
		map[c+2][d+2]=1;
	}
	
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(map[i][j]==0)	ans++;
		}
	}
	printf("%d",ans);
	return 0;
}

最终输出时,为什么遍历二维数组时i和j都从1开始至小于等于n能AC,但是i和j从0开始至小于n就只能80?

想不明白为什么,求解答

2023/7/26 16:48
加载中...