30分,求讲解
查看原帖
30分,求讲解
992935
prophetcoding楼主2023/8/20 10:18
#include <bits/stdc++.h>
using namespace std;
int zx,zy,a,b,s=0;
int maze[10][10];
bool road[10][10];
int dir1[5]= {0,0,0,1,-1};
int dir2[5]= {0,1,-1,0,0};
int n,m,t;
void dfs(int x,int y)
{
	if(x==zx && y==zy)
	{
		s++;
		return;
	}
	for(int i=1;i<=4; i++)
	{
		int sx=x+dir1[i];
		int sy=y+dir2[i];
		if(sx<1||sx>m||sy<1||sy>n)
			continue;
		if(road[sx][sy]==false)
			continue;
		if(maze[sx][sy]==1)
			continue;
		road[sx][sy]=false;
		dfs(sx,sy);
	}
	return;
}
int main()
{
	int x,y;
	cin>>n>>m>>t;
	cin>>x>>y>>zx>>zy;
	for (int i=1;i<=t;i++)
	{
		a=0,b=0;
		cin>>a>>b;
		maze[a][b]==1;
	}
	dfs(x,y);
	cout<<s<<endl;
	return 0;
}
2023/8/20 10:18
加载中...