编辑代码

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    static int n;
    static int m;
    static int t;
    static int[][] state;
    static int[][] dp;
    static int x2;
    static int y2;
    static int ans;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        m = scan.nextInt();
        t = scan.nextInt();
        dp = new int[n][m];
        state = new int[n][m];
        int x1 = scan.nextInt();
        int y1 = scan.nextInt();
        x2 = scan.nextInt()-1;
        y2 = scan.nextInt()-1;
        for(int i = 0;i<t;i++)
        {
            int t1 = scan.nextInt();
            int t2 = scan.nextInt();
            dp[t1-1][t2-1] = 1;
        }
        for(int i = 0;i<n;i++)
        {
            for(int j = 0;j<m;j++)
            {
                if(i==x1-1&&j==y1-1)
                {
                    dfs(i,j);
                }
            }
        }
        System.out.println(ans);
    }
    public static void dfs(int x,int y)
    {
        if(x<0||x>=n||y<0||y>=m||state[x][y]==1)
        {
            return;
        }
        if(x==x2&&y==y2)
        {
            ans++;
            return;
        }
        state[x][y] = 1;
        if(x+1<m&&state[x+1][y]==0&&dp[x+1][y]==0)
        {
            dfs(x+1,y);
        }
        if(x-1>=0&&state[x-1][y]==0&&dp[x-1][y]==0)
        {
            dfs(x-1,y);
        }
        if(y+1<n&&state[x][y+1]==0&&dp[x][y+1]==0)
        {
            dfs(x,y+1);
        }
        if(y-1>=0&&state[x][y-1]==0&&dp[x][y-1]==0)
        {
            dfs(x,y-1);
        }
        state[x][y] = 0;
        return;
    }
}