20pts玄关求调
  • 板块P1605 迷宫
  • 楼主wangzixu2011
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/2/8 17:08
  • 上次更新2025/2/8 18:06:09
查看原帖
20pts玄关求调
1014978
wangzixu2011楼主2025/2/8 17:08
#include<bits/stdc++.h> 
#define int long long
using namespace std;
const int N = 1000+5;
int n,m,t;
int sx,sy,fx,fy;
bool a[N][N];
bool vis[N][N];
int tx,ty;
int ans = 0;
void dfs(int nowx,int nowy){
	if(nowx == fx && nowy == fy){
		ans++;
		return;
	}
	else{
		if(nowx+1 <= n && nowy+1 <= m && !a[nowx+1][nowy+1] && !vis[nowx+1][nowy+1]){
			vis[nowx][nowy] = 1;
			dfs(nowx+1,nowy+1);
			vis[nowx][nowy] = 0;
		}
		if(nowx+1 <= n && nowy-1 >= 1 && !a[nowx+1][nowy-1] && !vis[nowx+1][nowy-1]){
			vis[nowx][nowy] = 1;
			dfs(nowx+1,nowy-1);
			vis[nowx][nowy] = 0;
		}
		if(nowx-1 >= 1 && nowy+1 <= m && !a[nowx-1][nowy+1] && !vis[nowx-1][nowy+1]){
			vis[nowx][nowy] = 1;
			dfs(nowx-1,nowy+1);
			vis[nowx][nowy] = 0;
		}
		if(nowx-1 >= 1 && nowy-1 >= 1 && !a[nowx-1][nowy-1] && !vis[nowx-1][nowy-1]){
			vis[nowx][nowy] = 1;
			dfs(nowx-1,nowy-1);
			vis[nowx][nowy] = 0;
		}
	} 
}
signed main(){
	cin>>n>>m>>t;
	cin>>sx>>sy>>fx>>fy;
	for(int i = 1;i <= t;i++){
		cin>>tx>>ty;
		a[tx][ty] = 1;
	}
	dfs(sx,sy);
	cout<<ans;
	return 0;
}
2025/2/8 17:08
加载中...