50分求助
  • 板块P1605 迷宫
  • 楼主WYQ123e
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/22 01:30
  • 上次更新2024/3/22 14:49:53
查看原帖
50分求助
1305916
WYQ123e楼主2024/3/22 01:30
#include <bits/stdc++.h>
using namespace std;
#define int long long
int nex[4][2]={//方向数组
    {1,0},//向右走
    {0,1},//向下走
    {-1,0},//向左走
    {0,-1}//向上走
};
int N,M,T;//长宽障碍总数
int SX,SY,FX,FY;
int res=0;
int visit[100][100];//标记数组
int **board;
void dfs(int x,int y){
    if(x==FX&&y==FY){
        res++;
        return ;
    }
    for(int i=0;i<=3;i++){
    	int tx,ty;
        tx=x+nex[i][0];
        ty=y+nex[i][1];
        if(tx<SX||tx>FX||ty<SY||ty>FY){
            continue;
        }
        if(visit[tx][ty]==0&&board[tx][ty]==0){
            visit[tx][ty]=1;
            dfs(tx,ty);
            visit[tx][ty]=0;
        }
    }
}
signed main(){
	cin >> N >> M >> T;
	cin >> SX >> SY >> FX >> FY;
    board=new int*[FX+1];
    for(int i=0;i<FX+1;i++){
    	board[i]=new int[FY+1];
    }
    for(int i=0;i<FX+1;i++){
        for(int j=0;j<FY+1;j++){
            board[i][j]=0;
        }
    }
    for(int i=0;i<T;i++){
        int x,y;
        cin >> x >> y;
        board[x][y]=1;
    }
    dfs(SX,SY);
    cout << res;
}
2024/3/22 01:30
加载中...