20分求!!!
  • 板块P1605 迷宫
  • 楼主chj123123
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/2/24 20:19
  • 上次更新2024/2/24 22:16:18
查看原帖
20分求!!!
1258409
chj123123楼主2024/2/24 20:19
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
/*
5 5 5 
1 2 5 5
2 1
2 2
2 3
2 4
3 4
*/
int n,m,t;
int num=0;
int zb[6][6]={0};//边界部分为-1 
int fx,fy,sx,sy;
int a,b;
void dfs(int x,int y){
	if(fx==x&&fy==y){//到达了该点 
		num++;
		return; 
	} 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(zb[i][j]==0)continue;//是障碍 
			if(abs(x-i)==1&&abs(y-j)==1){//表示在该点的周围
			    zb[i][j]=0;//设为障碍,走过了 
				dfs(i,j);//递归 
				zb[i][j]=1;//回溯 
			}
		}
	}
}
int main(){
	cin>>n>>m>>t;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
		zb[i][j]=1;//无障碍标为1
	}
	cin>>sx>>sy>>fx>>fy;
	zb[sx][sy]=0;
	for(int i=1;i<=t;i++){
		cin>>a>>b;
		zb[a][b]=0;//有障碍标为0
	}
	dfs(sx,sy);
	cout<<num;
	return 0;
} 
2024/2/24 20:19
加载中...