鱼C论坛

 找回密码
 立即注册
查看: 2144|回复: 1

[技术交流] C++刷LeetCode(959. 由斜杠划分区域)【深度优先搜索】【问题转化】

[复制链接]
发表于 2020-11-15 18:40:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:
  1. 在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。

  2. (请注意,反斜杠字符是转义的,因此 \ 用 "\" 表示。)。

  3. 返回区域的数目。

  4.  

  5. 示例 1:

  6. 输入:
  7. [
  8.   " /",
  9.   "/ "
  10. ]
  11. 输出:2
  12. 解释:2x2 网格如下:

  13. 示例 2:

  14. 输入:
  15. [
  16.   " /",
  17.   "  "
  18. ]
  19. 输出:1
  20. 解释:2x2 网格如下:

  21. 示例 3:

  22. 输入:
  23. [
  24.   "\\/",
  25.   "/\"
  26. ]
  27. 输出:4
  28. 解释:(回想一下,因为 \ 字符是转义的,所以 "\\/" 表示 \/,而 "/\" 表示 /\。)
  29. 2x2 网格如下:

  30. 示例 4:

  31. 输入:
  32. [
  33.   "/\",
  34.   "\\/"
  35. ]
  36. 输出:5
  37. 解释:(回想一下,因为 \ 字符是转义的,所以 "/\" 表示 /\,而 "\\/" 表示 \/。)
  38. 2x2 网格如下:

  39. 示例 5:

  40. 输入:
  41. [
  42.   "//",
  43.   "/ "
  44. ]
  45. 输出:3
  46. 解释:2x2 网格如下:

  47.  

  48. 提示:

  49. 1 <= grid.length == grid[0].length <= 30
  50. grid[i][j] 是&#160;'/'、'\'、或&#160;' '。

  51. 来源:力扣(LeetCode)
  52. 链接:https://leetcode-cn.com/problems/regions-cut-by-slashes
  53. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码



  1. class Solution {
  2. private:
  3.     vector<vector<int> > dir = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
  4.     int len;
  5. public:
  6.     void dfs(vector<vector<int> > & store, int i, int j){
  7.         if(i < 0 || i >= 3*len || j < 0 || j >= 3*len || store[i][j] == 1)return;
  8.         store[i][j] = 1;
  9.         for(int k = 0; k < dir.size(); k++){
  10.             dfs(store, i + dir[k][0], j + dir[k][1]);
  11.         }
  12.     }
  13.     int regionsBySlashes(vector<string>& grid) {
  14.         //转化输入
  15.         len = grid.size();
  16.         vector<vector<int> > store(3*len, vector<int>(3*len, 0));
  17.         for(int i = 0; i < len; i++){
  18.             for(int j = 0; j < len; j++){
  19.                 if(grid[i][j] == '/'){
  20.                     store[3*i][3*j + 2] = 1;
  21.                     store[3*i + 1][3*j + 1] = 1;
  22.                     store[3*i + 2][3*j] = 1;
  23.                 }else if(grid[i][j] == '\\'){
  24.                     store[3*i][3*j] = 1;
  25.                     store[3*i + 1][3*j + 1] = 1;
  26.                     store[3*i + 2][3*j + 2] = 1;
  27.                 }
  28.             }
  29.         }
  30.         int res = 0;
  31.         for(int i = 0; i < 3*len; i++){
  32.             for(int j = 0; j < 3*len; j++){
  33.                 if(store[i][j] == 0){
  34.                     dfs(store, i, j);
  35.                     res += 1;
  36.                 }
  37.             }
  38.         }
  39.         return res;

  40.     }
  41. };
复制代码



参考链接:https://leetcode-cn.com/problems ... i-jie-fa-by-godwei/

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-15 18:42:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-9 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表