50分 求助!!!
  • 板块P1605 迷宫
  • 楼主yukq11
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/5/6 11:40
  • 上次更新2023/10/23 16:32:39
查看原帖
50分 求助!!!
914039
yukq11楼主2023/5/6 11:40
#include <iostream>
using namespace std;
int vis[20][20];
int obs[20][20];
int n,m,t;
int sx,sy,fx,fy;
int tx,ty;
int walk[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int ans;

void dfs(int x,int y){
	//printf("现在在访问(%d,%d)\n",x,y);
	if(x==fx&&y==fy){
		ans++;
		return;
	}
	for(int i = 0; i < 4; i++){
		tx=x+walk[i][0];
		ty=y+walk[i][1];
		if(!obs[tx][ty]&&!vis[tx][ty]){
			vis[tx][ty]=1;
			dfs(tx,ty);
			vis[tx][ty]=0;
		}
	}
}

int main(){
	cin>>n>>m>>t;
	cin>>sx>>sy>>fx>>fy;
	for(int i = 0; i < t; i++){
		cin>>tx>>ty;
		obs[tx][ty]=1;
	}
	for(int i = 0; i <= m+1; i++){
		obs[0][i]=1; 
		obs[n+1][i]=1;
	} 
	for(int i = 0; i <= n+1; i++){
		obs[i][0]=1; 
		obs[i][m+1]=1;
	}
//	for(int i = 0; i < 20; i++){
//		for(int j = 0; j < 20; j++) cout<<obs[i][j]<<' ';
//		cout<<endl;
//	}
	vis[sx][sy]=1;	
	dfs(sx,sy);
	
	cout<<ans;
	return 0;
} 
2023/5/6 11:40
加载中...