先上题:

思路:别被题目下到,其实就是一个dp,首先要对题目进行分析。

可得:

1. 它不会向左走, 因为向左走后,右边的格子就空了,那么就又要向右走,它就在这终老。

2. 不会向上走,因为向上走,就说明右边不通,就说明其当前一定是向右走一段后或者向下走过一段,如果向下走过一段,那么走上去没有意义。如果向右走过一段,可以先向左走。

综上所述:

臭牛牛就只能向下和向右,最后才能逃出迷宫,然后上餐桌。

所以就可以的出递推公式。

dp(i,j)表示到(i,j)这个点需要添加的障碍数。

dp(i,j)​−>dp(i,j+1​)向右
dp(i,j)+(mp[i][j+1]==′0′)−>dp(i+1,j);向下

ac代码:

  1 #include <iostream>
  2 #include <algorithm>
  3 #include <cstring>
  4 #define INF 0x3f3f3f3f
  5 using namespace std;
  6 constexpr size_t maxn = 1005;
  7 string s[maxn];
  8 int dp[maxn][maxn];
  9
 10 int main(){
 11     int n, m;
 12     cin >> n >> m;
 13     for(int i = 0; i < n; ++ i)
 14         cin >> s[i];
 15     memset(dp, INF, sizeof(dp));
 16
 17     dp[0][0] = 0;
 18     for(int i = 0; i < n; ++ i){
 19         for(int j = 0; j < m; ++ j){
 20             if(s[i][j] == '0'){
 21                 if(j < m-1 && s[i][j+1] == '0')//向右
 22                     dp[i][j+1] = min(dp[i][j+1], dp[i][j]);
 23                 if(i < n-1 && s[i + 1][j] == '0'){
 24                     if(j == m - 1 || s[i][j+1] == '1')//如果右边直接是障碍物
 25                         dp[i+1][j] = min(dp[i+1][j], dp[i][j]);
 26                     else
 27                         dp[i+1][j] = min(dp[i+1][j], dp[i][j] + 1);//添加障碍物将右边堵上。
 28                 }
 29             }
 30         }
 31     }
 32     if(dp[n-1][m-1] == INF)puts("-1");
 33     else
 34         cout << dp[n-1][m-1] << endl;
 35     return 0;
 36 }

[补题]牛客练习56,迷宫【orz】相关推荐

  1. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  2. 刷题记录:牛客NC15434wyh的迷宫

    传送门:牛客 题目描述: 给你一个n*m的迷宫,这个迷宫中有以下几个标识: s代表起点 t代表终点 x代表障碍物 .代表空地 现在你们涵哥想知道能不能从起点走到终点不碰到障碍物(只能上下左右进行移动, ...

  3. SQL每日一题 牛客17 10月的新客户单价和获客成本

    试题链接10月的新户客单价和获客成本_牛客题霸_牛客网 分析排行榜第一名的解法 用窗口函数与join连接两个表格来做(要把大象装冰箱,拢共分五步) 第一步:用rank()over()窗口函数按照时间排 ...

  4. 思维题-牛客网-强迫症的序列

    题目: 链接:https://ac.nowcoder.com/acm/contest/90/J?&headNav=www 来源:牛客网 题目描述 牛客网是IT求职神器,提供海量C++.JAVA ...

  5. 集训队脱单大法:这是一道只能由学姐我自己出数据的水题(牛客竞赛)

    链接:https://ac.nowcoder.com/acm/contest/322/F 来源:牛客网 题目描述 总所不周知!ZZZZone有了女朋友却谁也不知道.但是ZZZZone在集训队总是和陈大 ...

  6. 牛客练习赛56 A-小蒟和他的乐谱

    链接:https://ac.nowcoder.com/acm/contest/3566/A 来源:牛客网 题目描述 小蒟上音乐课的时候,老师说宫商角徵羽(分别对应C大调的do,re,mi,sol,la ...

  7. 前端 300题 —— 牛客网

    1 手写jsonp的实现 2 手写链表倒数第K个查找 3 http请求头,请求体,cookie在哪个里面?url在哪里面? 4 原型链的解释 5 对闭包的理解,实现一个暴露内部变量,而且外部可以访问修 ...

  8. 牛客练习赛 56 E tarjan 割边

    A - 小蒟和他的乐谱 签到题,将原序列对 7 取模之后将序列扫描一遍就可以得到答案 不过感觉题目意思还需要理解理解 #define IO ios::sync_with_stdio(false);ci ...

  9. C语言入门必刷题-牛客网精选5道

    目录 1.BC12 学生基本信息输入输出 2.BC89 包含数字9的数 3.BC29 开学? 4.BC77 简单计算器 5.BC140 杨辉三角 1.BC12 学生基本信息输入输出 描述 依次输入一个 ...

最新文章

  1. 字符编码_Windows资料
  2. Oracle11.2.0.4 windows32+64bit opatch工具 11.2.0.0 百度云盘下载
  3. 下一代Windows界面曝光!
  4. fast rcnn 论文解读(附代码链接)
  5. java 自定义注解 生成json_Java中如何创建自定义的注解
  6. Webpack的基本配置
  7. hadoop安装和配置 详解
  8. 电脑上最好的5个azw3阅读器
  9. 骰子游戏实验报告C语言,掷骰子游戏电路的设计与实现实验报告
  10. CVPR等会议论文集检索下载与数据库资源使用
  11. 清翔51单片机开发板及原理图-去年购买的
  12. 【全栈软件测试】二、Windows服务器(2-2)搭建web服务器(2-2-1)架设一个网站--使用四种方法
  13. 常用的mysql函数及在TP中使用示例
  14. java实现生命游戏(2维元胞自动机)
  15. 闲鱼最新选品技巧,快速帮你找到爆款!
  16. 3)数据科学的数学之序列与极限--阶乘/指数增长比较
  17. DELPHI资源文件使用
  18. Caffe 作者贾扬清:我为什么离开 Google,加入 Facebook?
  19. android 表情的输入 Unicode实现表情展示 无需图片素材及相关解析
  20. java入门~第十六天 对象数组以及集合和相关数据结构

热门文章

  1. Ext ColumnModel
  2. Win10 Hyper-V 搭建虚拟机 网络配置(简单有用)
  3. bzoj 4451: [Cerc2015]Frightful Formula 数学+排列组合
  4. 阿狸心形表白html,KDA阿狸皮肤特效评测 KDA阿狸原画预览
  5. 正态性检验之QQ图与PP图
  6. python关于类和对象说法正确的是_关于类和对象,下面说法正确的是?
  7. 一文了解研究大脑的技术
  8. Android Preference使用
  9. vue-cli项目引用外部CSS和JS
  10. DeepTables: 为结构化数据注入深度学习的洪荒之力