日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

dfs是什么意思_英语单词搜索软件

發布時間:2023/12/19 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 dfs是什么意思_英语单词搜索软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個 m x n 二維字符網格 board 和一個單詞(字符串)列表 words,找出所有同時在二維網格和字典中出現的單詞。

單詞必須按照字母順序,通過 相鄰的單元格 內的字母構成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母在一個單詞中不允許被重復使用。

示例 1:


輸入:board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"]], words = ["oath","pea","eat","rain"]
輸出:["eat","oath"]
示例 2:


輸入:board = [["a","b"],["c","d"]], words = ["abcb"]
輸出:[]
 

提示:

m == board.length
n == board[i].length
1 <= m, n <= 12
board[i][j] 是一個小寫英文字母
1 <= words.length <= 3 * 104
1 <= words[i].length <= 10
words[i] 由小寫英文字母組成
words 中的所有字符串互不相同
題解
Trie+暴力搜索

class Solution { 

public:
static const int N = 3e4 + 10;
int trie[N][26],cnt[N],idx;
void insert(string &t){ 

int p = 0;
for(auto &c : t){ 

int u = c - 'a';
if(trie[p][u] == 0)trie[p][u] = ++idx;
p = trie[p][u];
if(cnt[p] != 1)cnt[p] = -1;
}
cnt[p] = 1;
}
vector<string>res;
string t = "";
int n,m;
int vis[12][12],dx[4] = { 
0,1,0,-1},dy[4] = { 
-1,0,1,0};
int flag[N] = { 
0};
set<string>ss;
void dfs(int x,int y,vector<vector<char>>& board,int p){ 

if(cnt[p] == 1){ 

if(flag[p] == 0)res.push_back(t),flag[p] = 1;
}else if(cnt[p] == 0){ 

return;
}
if(x < 0 || x >= n || y < 0 || y >= m)return;
if(vis[x][y])return;
vis[x][y] = true;
t.append(1,board[x][y]);
for(int k = 0;k < 4;k ++){ 

int a = x + dx[k],b = y + dy[k];
if(trie[p][board[x][y] - 'a'] != 0)
dfs(a,b,board,trie[p][board[x][y] - 'a']);
}
t.erase(t.size() - 1,1);
vis[x][y] = false;
}
vector<string> findWords(vector<vector<char>>& board, vector<string>& words) { 

for(auto &word : words)insert(word);
cnt[0] = -1;
n = board.size(),m = board[0].size();
for(int i = 0;i < n;i ++){ 

for(int j = 0;j < m;j ++){ 

dfs(i,j,board,0);
}
}
return res;
}
};

總結

以上是生活随笔為你收集整理的dfs是什么意思_英语单词搜索软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。