博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: word search
阅读量:7240 次
发布时间:2019-06-29

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

思路:

简单搜索

总结:

1. 第一次做的时候忘记加 visited 数组了

2. 做完 kedebug 的搜索题, 简单搜索问题都变得像小绵羊一样温顺了

3. 还是 dfs 框架. 书上所写的 dfs 框架, 一般由 DFS, dfs 两个函数拼成, DFS 负责接收参数和变量初始化, dfs 负责一般情况下的遍历. 两个函数连用比仅用一个 dfs 要好的多, 因为减少了很多判断语句. 下面的代码, 相当于 DFS+ dfs.

 

代码:

#include 
#include
#include
using namespace std;const int MAXN = 200;bool visited[MAXN][MAXN];int dire[4][2] = {-1,0, 1,0, 0,-1, 0,1};class Solution {public: vector
> vec; string str; bool ans; void dfs(const int &i, const int &j, const int &depth) { if(depth == str.size()) { ans = true; return; } for(int d = 0; d < 4 && !ans; d ++) {// directions int newi = i+dire[d][0], newj = j+dire[d][1]; if(newi >= 0 && newi
= 0 && newj < vec[newi].size() && !visited[newi][newj]) { if(vec[newi][newj] == str[depth]) { visited[newi][newj] = 1; dfs(newi, newj, depth+1); visited[newi][newj] = 0; } } } } bool exist(vector
> &board, string word) { vec = board; str = word; ans = false; memset(visited, 0, sizeof(visited)); for(int i = 0; i < board.size()&&!ans; i ++) { for(int j = 0; j < board[i].size()&&!ans; j++) { if(board[i][j] == word[0]) { visited[i][j] = true; dfs(i, j, 1); visited[i][j] = false; } } } return ans; }};

  

转载地址:http://qhybm.baihongyu.com/

你可能感兴趣的文章
oracle vm的虚拟机windows启动不了的处理方式
查看>>
Hyper-V 2012实时迁移
查看>>
Microsoft Azure Site Recovery (2) 配置虚拟机保护
查看>>
Microsoft Azure Site Recovery (1) 安装VMM服务器代理
查看>>
【转】动态模型及其求解介绍—上
查看>>
学习 ExtJS 4 面板与布局
查看>>
SQL ALTER TABLE 语句
查看>>
使用jquery提交form表单并自定义action
查看>>
Unity3D引用dll打包发布的问题及解决
查看>>
Android开发之Google Map
查看>>
基于内容的图片检索CBIR(Content Based Image Retrieval)简介
查看>>
VS2012编译LibZip库
查看>>
[置顶] 程序员的奋斗史(二十五)——情绪与生活
查看>>
Linux kernel中网络设备的管理
查看>>
反转字符串
查看>>
FusionCharts或其它flash的div图层总是浮在最上层? (转)
查看>>
[Android] Service和IntentService中显示Toast的区别
查看>>
How Tomcat Works(七)
查看>>
烟大 2239: 十进制与八进制的转换(栈和队列)
查看>>
hdu 4681(枚举+dp)
查看>>