*题目描述 *
牛牛得到了一份寻宝图,根据寻宝图的指示,牛牛在一个nxm的网格中,牛牛的位置在(1,1),宝藏的位置在(n,m),由于寻宝需要按照特定规则,所以牛牛只能往上走或者往右走。藏宝人为了让故意为难牛牛,在地图中设置了一块长方形的陷阱区域,牛牛要是碰到了陷阱可能会有生命危险,陷阱左下坐标为(x0,y0),右上坐标为(x1,y1)。为了牛牛能顺利找到宝藏你能告诉他有多少种不同的寻宝路径吗。
图片说明

题目分析
这是一个dp的模板题,就是求起始点到终点有多少条路径,我们只需要注意一些边界情况就可以了

typedef long long ll;
const int mod = 1e9 + 7;
class Solution {
public:
    /**
     *
     * @param n int整型
     * @param m int整型
     * @param x0 int整型
     * @param y0 int整型
     * @param x1 int整型
     * @param y1 int整型
     * @return int整型
     */
    ll dp[1010][1010];
    int GetNumberOfPath(int n, int m, int x0, int y0, int x1, int y1) {
        // write code here
        dp[1][1] = 1;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++) {
                if (i == 1 && j == 1) continue;
                if (i >= x0 && i <= x1 && j >= y0 && j <= y1) continue;
                    dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % mod;
            }
        return dp[n][m];
    }
};