30分求解
  • 板块P1605 迷宫
  • 楼主chenyuye
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/9/9 12:21
  • 上次更新2024/9/9 19:13:33
查看原帖
30分求解
1442836
chenyuye楼主2024/9/9 12:21
#include<iostream>
using namespace std;
int map[101][101]={0};
bool tag[101][101];
int n,m,t,x,y,x1,y1,tx,ty,count=0;
int dx[4]={0,0,1,-1};
int dy[4]={-1,1,0,0};
void bfs(int xx,int yy)
{
	if(xx==x1,yy==y1) 
	{
		count++;
		return;
	}
	else
	{
		for(int i=0;i<=3;i++)
		{
			if(tag[xx+dx[i]][yy+dy[i]]==false&&map[xx+dx[i]][yy+dy[i]]==0&&xx+dx[i]<=n&&yy+dy[i]<=m&&xx+dx[i]>=1&&yy+dy[i]>=1)
			{
				tag[xx][yy]=true;
				bfs(xx+dx[i],yy+dy[i]);
				tag[xx][yy]=false;
			}
		}
	}
	
}
int main()
{
	cin>>n>>m>>t;
	cin>>x>>y>>x1>>y1;
	for(int i=1;i<=t;i++)
	{
		cin>>tx>>ty;
		map[tx][ty]=1;
	}
	bfs(x,y);
	cout<<count;
	return 0;
}
2024/9/9 12:21
加载中...