ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

力扣 题目79- 单词搜索

2022-07-02 15:32:37  阅读:146  来源: 互联网

标签:单词 cnt return int 力扣 board word 79 size


题目

题解

回溯算法 找到开头然后对上下左右四个方向 回溯 已经遍历过的至* 直到长度与word一致

代码

 1 #include<iostream>
 2 #include<vector>
 3 #include<unordered_map>
 4 using namespace std;
 5 //1是上 2是下 3是左 4是右
 6 bool loop(vector<vector<char>>& board, string& word, int x, int y, int cnt) {
 7     if (y < 0 || x < 0 || x >= board.size() || y >= board[0].size() || board[x][y] != word[cnt]) {
 8         return 0;
 9     }
10     cnt += 1;
11     if (cnt == word.size()) {
12         return 1;
13     }
14     char keep = board[x][y];
15     board[x][y] = '*';
16     //上
17     if (loop(board, word, x - 1, y, cnt)) {
18         return 1;
19     }
20     //下
21     if (loop(board, word, x + 1, y, cnt)) {
22         return 1;
23     }
24     //左
25     if (loop(board, word, x, y - 1, cnt)) {
26         return 1;
27     }
28     //右
29     if (loop(board, word, x, y + 1, cnt)) {
30         return 1;
31     }
32     board[x][y] = keep;
33     return 0;
34 }
35 //只看右和下
36 class Solution {
37 public:
38     bool exist(vector<vector<char>>& board, string word) {
39         //如果word长度比board大直接返回0
40         if (board.size() * board[0].size() < word.size()) {
41             return 0;
42         }
43         //找到开头进行回溯
44         for (int i = 0; i < board.size(); i++) {
45             for (int j = 0; j < board[i].size(); j++) {
46                 if (board[i][j] == word[0]) {
47                     int x = i;
48                     int y = j;
49                     int succes = loop(board, word, x, y, 0);
50                     if (succes) {
51                         return true;
52                     }
53                 }
54             }
55         }
56         return 0;
57     }
58 };
59 int main() {
60     Solution sol;
61     vector<vector<char>> board = { {'A', 'B', 'C', 'E'},{'S', 'F', 'C', 'S' },{'A', 'D', 'E', 'E'}};
62     string word = "ABCCED";
63     bool result=sol.exist(board, word);
64     cout << result << endl;
65     }
View Code

 

标签:单词,cnt,return,int,力扣,board,word,79,size
来源: https://www.cnblogs.com/zx469321142/p/16437667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有