国产探花免费观看_亚洲丰满少妇自慰呻吟_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; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太仆寺旗| 闽侯县| 淮南市| 邢台市| 东海县| 湘潭市| 江北区| 广西| 西充县| 宁南县| 清水河县| 乐陵市| 拉孜县| 台中县| 塔城市| 合江县| 宝丰县| 商城县| 民乐县| 正蓝旗| 璧山县| 蓬安县| 滦平县| 宣城市| 榆树市| 名山县| 青州市| 武山县| 茌平县| 河池市| 泗阳县| 民乐县| 阜南县| 岳阳县| 普宁市| 安阳市| 都江堰市| 江西省| 新宾| 石城县| 南部县|