Word Search
来源:互联网 发布:阿斯顿马丁广告 知乎 编辑:程序博客网 时间:2024/06/05 20:49
和数独一样的思路,brute-force,分四个方向,但是因为我是先判断相等再递归调用,判断结束条件的时候应该是位置在最后一个字符n-1,而不是n。(就这个-1调了一个小时TT。。)
class Solution {public: bool dfs(vector<vector<char>> &board, string word, int p, int r, int c, vector<vector<bool> > &visited) { if (p==word.size()-1) { return true; } if (c+1<board[0].size() && !visited[r][c+1]) { if (board[r][c+1]==word[p+1]) { visited[r][c+1]=true; if (dfs(board, word, p+1, r, c+1, visited)) return true; } } if (c-1>=0 && !visited[r][c-1]) { if (board[r][c-1]==word[p+1]) { visited[r][c-1]=true; if (dfs(board, word, p+1, r, c-1, visited)) return true; } } if (r+1<board.size() && !visited[r+1][c]) { if (board[r+1][c]==word[p+1]) { visited[r+1][c]=true; if (dfs(board, word, p+1, r+1, c, visited)) return true; } } if (r-1>=0 && !visited[r-1][c]) { if (board[r-1][c]==word[p+1]) { visited[r-1][c]=true; if (dfs(board, word, p+1, r-1, c, visited)) return true; } } visited[r][c]=false; return false; } bool exist(vector<vector<char> > &board, string word) { vector<vector<bool> > visited(board.size(), vector<bool>(board[0].size(),false)); for (int i=0; i<board.size(); i++) { for (int j=0; j<board[0].size(); j++) { if (board[i][j]==word[0]) { visited[i][j]=true; if (dfs(board, word, 0, i, j, visited)) return true; } } } return false; }};
0 0
- Word Search
- Word Search
- word search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- Word Search
- adb-server无法启动,5037端口被占用
- python调用mysql命令查询和插入表数据(python练手)
- war包怎么部署
- 不同显卡生产商的OpenGL SDK
- 你优化系统的目标是什么?
- Word Search
- 说说linux的磁盘分区吧
- ORACLE数据库查看执行计划的方法
- oracle 12c 我遇到的安装问题及解决办法
- Windows无法启动OracleOraDb10g_home1TNSListener服务,错误1067
- [LeetCode] Linked List Cycle
- Oracle笔记之权限管理
- Oracle笔记之权限管理
- 《C++ Primer第四版》标准库类型(一) - using声明