求助,为何不对
  • 板块P1141 01迷宫
  • 楼主_pwl
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/9/10 19:38
  • 上次更新2023/11/5 13:27:57
查看原帖
求助,为何不对
250609
_pwl楼主2020/9/10 19:38

RT

#include<iostream>
#include<cstdio>
using namespace std;
inline void read(int &x){	//快读 
	int f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	x*=f;
}
int dx[9]={0,1,-1,1,-1,0,0,1,-1},dy[9]={0,-1,1,0,0,1,-1,1,-1};
int x,y;
char map[1001][100001];
int m,n;
inline int DFS(int p,int q){
	int cnt=0;
	if(map[p][q]=='t'){
		for(int i=1;i<=8;i++){
			if(p+dx[i]<0||p+dx[i]>x+1||q+dy[i]<0||q+dy[i]>y+1) continue;
			if(map[p+dx[i]][q+dy[i]]=='f'){
				cnt++;
				DFS(p+dx[i],q+dy[i]);
			}
		}
	}
	else{
		for(int i=1;i<=8;i++){
			if(p+dx[i]<0||p+dx[i]>x+1||q+dy[i]<0||q+dy[i]>y+1) continue;
			if(map[p+dx[i]][q+dy[i]]=='t'){
				cnt++;
				DFS(p+dx[i],q+dy[i]);
			}
		}
	}
	return cnt;
}
int main(){
	read(x);read(y);
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			scanf("%c",&map[i][j]);
			if(map[i][j]=='0') map[i][j]=='f';
			else map[i][j]=='t';
		}
	}
	for(int i=1;i<=y;i++){
		read(m);read(n);
		printf("%d\n",DFS(m,n));
	}
	return 0;
}
2020/9/10 19:38
加载中...