【牛客编程巅峰赛S1第10场】寻宝

寻宝

https://ac.nowcoder.com/acm/problem/207825

题目

牛牛得到了一份寻宝图,根据寻宝图的指示,牛牛在一个 的网格中,牛牛的位置在 ,宝藏的位置在
由于寻宝需要按照特定规则,所以牛牛只能往上走或者往右走。
藏宝人为了让故意为难牛牛,在地图中设置了一块长方形的陷阱区域,陷阱左下坐标为 ,右上坐标为 ,牛牛要是碰到了陷阱可能会有生命危险。
牛牛能顺利找到宝藏有多少种不同的寻宝路径?

解题思路

动态规划

表示顺利到达位置 时的路径数目。
牛牛可以往上走或往右走,所以
当然前提是位置 不是位于陷阱区域。如果是的话,
最后,返回 作为答案。

C++代码

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

相关推荐

DKS233:(1)专业技能:Java8也太旧了,最少也要了解到JDK17吧,可以参考现在SpringBoot支持的Java最低版本,熟悉mysql基本理论具体指啥,是锁这种具体原理还是分库分表这些业务场景,spring这些专业词汇,大小写要写对(全篇简历都有这个问题,显得不严谨),熟悉使用框架进行业务开发就别写了,如果要写,起码要写到框架原理部分吧,比如aop,启动原理什么的,springcloud具体指哪些模块呢,写清楚,网关还是鉴权还是什么,“改造”没必要写吧,你直接说用springcloud开发的不就行了(2)项目经历:首先格式就有大问题,时间怎么能换行呢,调整一下,响应速度那个,如果指的是将部分数据从其他数据库转到redis的提升就别写了,因为这个不算难点,redis可以写写分布式这些,比如容灾怎么实现的,数据库同步怎么做的
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
鸿哥鸿哥:学院(一本),感觉在脱ku子放屁,学院结尾的除了那几家出名的,一律按二本处理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务