(13)UniquePathIII

一、问题描述

给定一个二维数组。

  • 数组只有一个元素是1,是起点
  • 数组只有一个元素是2,是终点
  • 数组中的0是必须经过的地方
  • 数组中的-1是障碍不可通过

从起始点到终点一共有多少路径?

 

二、思路

DFS

三、Code

 1 package algorithm;
 2 
 3 /**
 4  * Created by adrian.wu on 2019/2/27.
 5  */
 6 public class UniquePathIII {
 7     private int sr, sc, er, ec, res, empty = 0;
 8     public int uniquePathIII(int[][] grid) {
 9         for (int i = 0; i < grid.length; i++) {
10             for (int j = 0; j < grid[0].length; j++) {
11                 if (grid[i][j] == 0) empty++;
12                 else if (grid[i][j] == 1) {
13                     sr = i;
14                     sc = j;
15                 }
16                 else if (grid[i][j] == 2) {
17                     er = i;
18                     ec = j;
19                     empty++;
20                 }
21             }
22         }
23 
24         dfs(grid, sr, sc);
25         return res;
26     }
27 
28     private void dfs(int[][] grid, int i, int j) {
29         if (!validRange(grid, i, j)) return;
30         if (i == er && j == ec && empty == 0) {
31             res++;
32             return;
33         }
34         grid[i][j] = -2;
35         empty--;
36         dfs(grid, i + 1, j);
37         dfs(grid, i - 1, j);
38         dfs(grid, i, j + 1);
39         dfs(grid, i, j - 1);
40         grid[i][j] = 0;
41         empty++;
42     }
43 
44     private boolean validRange(int[][] grid, int i, int j) {
45         return i >= 0 && i < grid.length && j >= 0 && j < grid[0].length && grid[i][j] >= 0;
46     }
47 
48 }

 

转载于:https://www.cnblogs.com/ylxn/p/10441940.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring IOC-BeanFactory的继承体系结构

本文主要介绍BeanFactory以及它的各种继承层级的接口、抽象类及实现类&#xff0c;因为内容很多&#xff0c;所以这里不介绍ApplicationContext继承体系下的类&#xff08;虽然ApplicationContext本质上也是BeanFactory&#xff0c;但是毕竟这这是我们平时接触最多的两种类别&a…

deepin15.7挂载/home到单独的分区:

1、首先打开Gpart分区编辑器&#xff0c;找一个空闲的分区&#xff0c;调整好分区大小&#xff0c;格式化成ext4格式。 具体步骤为首先unmount所用到的盘&#xff0c;然后右击该盘选择format to ext4&#xff0c;最后点击apply提交修改 2、记录下分区的路径&#xff0c;比如 /d…

Java使用Redis实现分布式锁来防止重复提交问题

如何用消息系统避免分布式事务&#xff1f; - 少年阿宾 - BlogJavahttp://www.blogjava.net/stevenjohn/archive/2018/01/04/433004.html 【请求去重】java基于分布式锁解决重复请求问题 - qq_41793222的博客 - CSDN博客https://blog.csdn.net/qq_41793222/article/details/830…

【PHP】xampp配置多个监听端口和不同的网站目录(转)

转自&#xff1a;https://blog.csdn.net/cc1314_/article/details/75646344 windows下使用xampp配置多个监听端口和不同的网站目录 一&#xff1a;配置Apache文件httpd.conf打开Apache的配置文件httpd.conf&#xff0c;可以通过点击xampp的Apache的config下的Apache(httpd.conf…

本地连接虚拟机 Oracle数据库 报ORA-12541:TNS:no listener

一、环境 本机环境&#xff1a;win10,pl/sql Developer 虚拟机环境&#xff1a;win10&#xff0c;oracle 11g 1.本机和虚拟机互相ping都可以ping通。 2.虚拟机监听程序已启动。 二、配置文件 1.本机 tnsname.ora 配置文件 local (DESCRIPTION   (ADDRESS_LIST   (ADDR…

Java消息中间件

1.概述 中间件 非底层操作系统软件&#xff0c;非业务应用软件&#xff0c;不是直接给最终用户使用的&#xff0c;不能直接给客户带来价值的软件统称为中间件。 消息中间件 管制关注于数据的发送和接收&#xff0c;利用高效可靠的异步消息传递机制集成分布式系统。 优点 ① 解…

form 源码刨析

def clean_name(self) value self.cleaned_data.get(name) if "金-瓶-梅" not in value: raise ValidationError("不符合要求") return value 重写clean方法 转载于:https://www.cnblogs.com/wuheng-123/p/9623289.html

两道面试题

fi [] for i in range(3):def foo(x):print(x i) #由于函数在这时还没有执行&#xff0c;在这里的i&#xff0c;指向的还是同一个IP地址&#xff0c;所以都是2.fi.appent(foo) for f in fi:f(2)答案&#xff1a;4&#xff0c;4&#xff0c;4 a [0, 1, 2, 3, 4] print(a[-6:6…

uiautomator2进阶

点击控件的具体位置 d(text"Settings").click(offset(0.5, 0.5)) 点击控件的中间位置 d(text"Settings").click(offset(0, 0)) 点击控件的左上方 d(text"Settings").click(offset(1, 1)) 点击控件的右下方 拖动控件 d(text"Settings&quo…

LIS路径记录(UVA481)

出自一次很失败的开学测试 LIS自然会做 可以参见&#xff1a;https://blog.csdn.net/Radium_1209/article/details/79704234 由于对于LIS的nlogn算法不熟悉&#xff0c;导致错误理解&#xff0c;记录的路径出现了问题&#xff0c;其中还用了n^2的算法记录路径&#xff08;好理解…

Activemq源码、编译、导入idea、源码调试总结

1、在本地下载源码 在GitHub官网搜activemq&#xff0c;找到排名第一的&#xff0c;并打开&#xff0c;如图所示&#xff0c;拷贝url地址。 activemq托管地址&#xff1a;https://github.com/apache/activemq.git 切换到git bash下&#xff0c;输入命令&#xff1a; mkdir a…

activiti 视图

1. application.properties增加如下配置 spring.activiti.database-schema-updatefalsespring.activiti.db-history-usedfalsespring.activiti.db-identity-usedfalse 2. 视图sql -- 修改表名称 ALTER TABLE act_id_user RENAME act_id_user_bak1; ALTER TABLE act_id_group RE…

ActiveMQ源码解析 建立连接

作为一个消息中间件&#xff0c;有客户端和服务端两部分代码&#xff0c;这次的源码解析系列主要从客户端的代码入手&#xff0c;分成建立连接、消息发送、消息消费三个部分。趁着我昨天弄明白了源码编译的兴奋劲头还没过去&#xff0c;今天研究一下建立连接的部分。 如果读起…

原生Js_实现广告弹窗

广告样式当页面加载后5s刷新在右下角 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Gary图片轮播</title><style type"text/css">#ad{width:300px;height: 300px;background-color:antiquewhite…

springcloud注册中心eureka

1、前提 springcloud的注册中心是以springboot为基础搭建起来的。 开发工具&#xff1a;IDEA 项目管理工具&#xff1a;maven 2、搭建步骤 创建一个web项目&#xff08;建议使用IDEA工具构建项目&#xff09;修改pom文件 <dependency><groupId>org.springframework…

Nancy in .Net Core学习笔记 - 视图引擎

前文中我们介绍了Nancy中的路由&#xff0c;这一篇我们来介绍一下Nancy中的视图引擎。 Nancy中如何返回一个视图(View) 在ASP.NET Mvc中&#xff0c;我们使用ViewResult类来返回一个视图。Nancy中也提供了类似的功能, 在NancyModule类中&#xff0c;Nancy提供了一个ViewRendere…

设计模式之组合模式(Composite 模式)

引入composite模式 在计算机文件系统中&#xff0c;有文件夹的概念&#xff0c;文件夹里面既可以放入文件也可以放入文件夹&#xff0c;但是文件中却不能放入任何东西。文件夹和文件构成了一种递归结构和容器结构。 虽然文件夹和文件是不同的对象&#xff0c;但是他们都可以被放…

Ansible批量在远程主机执行命令

Ansible直接执行远程命令&#xff0c;不用ssh登陆交互执行。    如下&#xff1a;    ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u supermap    参数解释&#xff1a;    -i 连接到远程主机“192.168.199.180&#xff0c;”&#xf…

HOJ 2651

一道二分的题目&#xff0c;但要注意不能用double&#xff0c; 并且要注意一下二分的步骤 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define pi 3.1415926535898 #define eps 0.0001 using namespace std; inl…

HierarchicalBeanFactory接口

HierarchicalBeanFactory 提供父容器的访问功能.至于父容器的设置,需要找ConfigurableBeanFactory的setParentBeanFactory(接口把设置跟获取给拆开了!). HierarchicalBeanFactory源码具体&#xff1a; 1、第一个方法返回本Bean工厂的父工厂。这个方法实现了工厂的分层。 2、第…