30分求助...我以为会爆0,毕竟案例都没过[捂脸]仔细校对感觉没有什么问题呀?
查看原帖
30分求助...我以为会爆0,毕竟案例都没过[捂脸]仔细校对感觉没有什么问题呀?
403598
筱雨丶Colicsin楼主2020/10/10 17:31
#include<iostream>
#include<cstdio>
#define maxn 500
using namespace std;
int map[maxn][maxn],n,m,t,total;
bool book[maxn][maxn]; 
int dirx[4]={0,0,1,-1};
int diry[4]={-1,1,0,0};
void dfs(int x,int y)
{
	if(map[x][y]==2)
	{
		total++;
		return ;
	}
	for(int i=0;i<4;i++)
	{
		if(map[x+dirx[i]][y+diry[i]]==1&&book[x+dirx[i]][y+diry[i]]==0)
		{
			book[x][y]=1;
			dfs(x+dirx[i],y+diry[i]);
			book[x][y]=0;
		}
	}
}
int main()
{
	cin>>n>>m>>t;
	int a,b,c,d;
	cin>>a>>b>>c>>d;
	map[c][d]=2;
	book[c][d]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			map[i][j]=1;
	for(int i=1;i<=t;i++)
	{
		int x,y;
		cin>>x>>y;
		map[x][y]=0;
		book[x][y]=1;
	}
	dfs(a,b);
	cout<<total<<endl;
	return 0;
}
2020/10/10 17:31
加载中...