90分求助
查看原帖
90分求助
551088
FincheuwYggdrasil楼主2021/12/12 09:04
#include<bits/stdc++.h>
using namespace std;

int vis[6][6],n,m,t;
int sX,sY,eX,eY,zX,zY;
int ans = 0;
int dx[4] = {0,0,1,-1};
int dy[4] = {-1,1,0,0};

void dfs(int x,int y)
{
    if(x == eX && y == eY)
    {
        ans++;
        return ;
    }
    else
    {
        for(int i = 0;i < 4;i++)
        {
            int nX = x + dx[i];
            int nY = y + dy[i];
            bool bo = nX > n || nY > m || nX < 1 || nY < 1 || vis[nX][nY] == 1 || vis[nX][nY] == 2;
            
            if(bo)
                continue;
            else
            {
                vis[nX][nY] = 1;
                dfs(nX,nY);
                vis[nX][nY] = 0;
            }
        }
    }
}

int main()
{
    cin >> n >> m >> t;
    cin >> sX >> sY >> eX >> eY;
    for(int i = 0;i < t;i++)
    {
        cin >> zX >> zY;
        vis[zX][zY] = 2;
    }
    vis[sX][sY] = 1;
    vis[eX][eY] = 3;
    dfs(sX,sY);
    cout << ans;
    return 0;
}
2021/12/12 09:04
加载中...