30分求助,找不到逻辑上的错误
  • 板块P1605 迷宫
  • 楼主micmic
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/4/2 16:36
  • 上次更新2023/10/28 04:51:35
查看原帖
30分求助,找不到逻辑上的错误
504142
micmic楼主2022/4/2 16:36
#include<iostream>
#include<string>
#include<cstring> 
using namespace std;

int N,M,T;
int map[6][6];
bool vis[6][6];
int SX,SY;
int FX,FY;
int cnt;

int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};

void dfs(int x,int y){
	if(x<0 || y<0 || x==N || y==M)return;	//走出了边界 
	if(map[x][y]==1) return;	//遇到了障碍 
	if(vis[x][y]==true)return;	//绕圈子了 
	if(x==FX && y==FY){
		cnt++;
		return;
	}
	vis[x][y]=true;
	//一个点走遍所有ta能走的方向
	for(int i=0;i<4;i++){ 
		dfs(x+dx[i],y+dy[i]);
		vis[x+dx[i]][y+dy[i]]=false;
	} 
}

int main(){
	cin>>N>>M>>T;
	cin>>SX>>SY>>FX>>FY;
	int x,y;
	for(int i=1;i<=T;i++){
		cin>>x>>y;
		map[x][y]=1;	//障碍是1,能走的是0 
	}
	dfs(SX,SY);
	cout<<cnt;
}
2022/4/2 16:36
加载中...