博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode "Word Search"
阅读量:4320 次
发布时间:2019-06-06

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

DFS + Backtrace + Pruning

class Solution {public:    vector
> visited; bool checkPos(vector
> &board, char c, int currX, int currY) { if (currX < 0 || currX >= board[0].size()) return false; if (currY < 0 || currY >= board.size()) return false; if (visited[currY][currX]) return false; return board[currY][currX] == c; } bool _exist(vector
> &board, string word, int currX, int currY) { if (word.length() == 0) return true; char c = word[0]; visited[currY][currX] = true; if (word.length() == 1) { return (checkPos(board, c, currX - 1, currY)) || (checkPos(board, c, currX, currY - 1)) || (checkPos(board, c, currX + 1, currY)) || (checkPos(board, c, currX, currY + 1)); } if (checkPos(board, c, currX - 1, currY)) { bool bLeft = _exist(board, word.substr(1, word.length() - 1), currX - 1, currY); if (bLeft) return true; visited[currY][currX - 1] = false; } if (checkPos(board, c, currX, currY - 1)) { bool bUp = _exist(board, word.substr(1, word.length() - 1), currX, currY - 1); if (bUp) return true; visited[currY - 1][currX] = false; } if (checkPos(board, c, currX + 1, currY)) { bool bRight = _exist(board, word.substr(1, word.length() - 1), currX + 1, currY); if (bRight) return true; visited[currY][currX + 1] = false; } if (checkPos(board, c, currX, currY + 1)) { bool bDown = _exist(board, word.substr(1, word.length() - 1), currX, currY + 1); if (bDown) return true; visited[currY + 1][currX] = false; } return false; } bool exist(vector
> &board, string word) { int n = board.size(); if (n == 0) return false; int m = board[0].size(); if (m == 0) return false; visited.resize(n); for (int i = 0; i < n; i++) { visited[i].resize(m); std::fill(visited[i].begin(), visited[i].end(), false); } char c = word[0]; for (int j = 0; j < n; j ++) for (int i = 0; i < m; i ++) { if (board[j][i] == c) { if (_exist(board, word.substr(1, word.length() - 1), i, j)) return true; visited[j][i] = false; } } return false; }};

转载于:https://www.cnblogs.com/tonix/p/3890122.html

你可能感兴趣的文章
坚定信心
查看>>
C++中 <iso646.h>头文件
查看>>
spring cloud: Hystrix(六):feign的注解@FeignClient:fallbackFactory(类似于断容器)与fallback方法...
查看>>
CISCO 动态路由(OSPF)
查看>>
vue.js实现移动端长按事件,处理长按事件和click事件冲突,长按安卓机支持震动...
查看>>
个人开发—进度记录(十一)
查看>>
java中JVM的原理
查看>>
php这是一个随机打印输出字符串的例子
查看>>
前端的图片压缩image-compressor(可在图片上传前实现图片压缩)
查看>>
20165309 实验四 Android程序设计
查看>>
团队博客目录
查看>>
linux的启动流程
查看>>
摩尔斯电码(Morse Code)Csharp实现
查看>>
C#NULL条件运算符
查看>>
使用GZIP压缩网页内容(一)
查看>>
《深入浅出MFC》第二章 C++的重要性质
查看>>
关于智能硬件设备shell安全设计
查看>>
homework1
查看>>
3选择结构程序设计
查看>>
Python学习 12day__高级语法
查看>>