博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer.矩阵中的路径
阅读量:5231 次
发布时间:2019-06-14

本文共 1320 字,大约阅读时间需要 4 分钟。

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。

路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。

如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。

注意:

  • 输入的路径不为空;
  • 所有出现的字符均为大写英文字母;
样例
matrix=[  ["A","B","C","E"],  ["S","F","C","S"],  ["A","D","E","E"]]str="BCCE" , return "true" str="ASAE" , return "false"

 

想法:回溯法,逐个遍历每一种情况。

class Solution{public:bool hasPath(vector
>& matrix, string str) { for(int i = 0 ; i < matrix.size() ; i++){ for(int j = 0 ; j < matrix[i].size(); j++){ if(dfs(matrix, str, 0, i, j)){ return true; } } } return false; }bool dfs(vector
>& matrix, string& str, int u, int x, int y){ if(matrix[x][y] != str[u])return false; if(u == str.size() - 1)return true; int dx[4] = {
1, 0 , -1 , 0}; int dy[4] = {
0, 1 ,0 ,-1}; char t = matrix[x][y]; matrix[x][y] = '*'; for(int i = 0 ; i < 4 ; i++){ int a = x + dx[i]; int b = y + dy[i]; if(a >=0 && a < matrixsize() && b >=0 && b < matirx[a].size()){ if(dfs(matrix, str, u+1, x, y)){ return true; } } } matrix[x][y] = t; return false;}}

转载于:https://www.cnblogs.com/tingweichen/p/10627800.html

你可能感兴趣的文章
黑马程序员_Java基础枚举类型
查看>>
一位90后程序员的自述:如何从年薪3w到30w!
查看>>
在.net core上使用Entity FramWork(Db first)
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
MongoDB的数据库、集合的基本操作
查看>>
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>