国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Leetcode 79 - Word Search(dfs)

2019-11-08 03:04:12
字體:
來源:轉載
供稿:網友

題意

求一個字符串是否能從矩形內某一點出發,沿上下左右走得到。

思路

dfs。

算法1

use[i][j]記錄位置[i, j]是否被訪問過,dfs就好。

算法2

我們訪問一個位置的時候,把它記為’#’,訪問完還原即可。

代碼

//algorithm 1const int maxn = 205;int use[maxn][maxn];class Solution {PRivate: int m, n; int dx[4], dy[4]; string Word;public: Solution() { dx[0] = -1, dx[1] = 1, dx[2] = 0, dx[3] = 0; dy[0] = 0, dy[1] = 0, dy[2] = -1, dy[3] = 1; } bool dfs(int x, int y, int pos, vector<vector<char>>& a) { if (pos == word.size() - 1) return word[pos] == a[x][y]; for (int i = 0; i < 4; i++) { int nx = x + dx[i], ny = y + dy[i]; if (nx >= 0 && nx < m && ny >= 0 && ny < n && !use[nx][ny] && a[nx][ny] == word[pos + 1]) { use[nx][ny] = 1; if (dfs(nx, ny, pos + 1, a)) return true; use[nx][ny] = 0; } } return false; } bool exist(vector<vector<char>>& board, string word) { m = board.size(); if (m) { n = board[0].size(); this->word = word; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == word[0]) { memset(use, 0, sizeof(use)); use[i][j] = 1; if (dfs(i, j, 0, board)) return true; } } } } return false; }};//algorithm 2class Solution {private: int m, n; int dx[4], dy[4]; string word;public: Solution() { dx[0] = -1, dx[1] = 1, dx[2] = 0, dx[3] = 0; dy[0] = 0, dy[1] = 0, dy[2] = -1, dy[3] = 1; } bool dfs(int x, int y, int pos, vector<vector<char>>& a) { if (pos == word.size() - 1) return word[pos] == a[x][y]; int t = a[x][y]; a[x][y] = '#'; for (int i = 0; i < 4; i++) { int nx = x + dx[i], ny = y + dy[i]; if (nx >= 0 && nx < m && ny >= 0 && ny < n && a[nx][ny] == word[pos + 1]) { if (dfs(nx, ny, pos + 1, a)) return true; } } a[x][y] = t; return false; } bool exist(vector<vector<char>>& board, string word) { m = board.size(); if (m) { n = board[0].size(); this->word = word; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == word[0]) { if (dfs(i, j, 0, board)) return true; } } } } return false; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砚山县| 永年县| 永新县| 巴林右旗| 通化市| 兴国县| 永修县| 临湘市| 郴州市| 灵石县| 汽车| 八宿县| 延长县| 资兴市| 墨江| 汪清县| 万宁市| 修文县| 赣榆县| 木兰县| 犍为县| 鄢陵县| 枣阳市| 克什克腾旗| 保靖县| 荣成市| 新宾| 宿松县| 横峰县| 乌兰县| 睢宁县| 东丰县| 保康县| 分宜县| 镶黄旗| 子长县| 大足县| 乌兰浩特市| 庆元县| 清苑县| 红原县|