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

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

返回区域的数目。

示例 1:

输入: [   " /",   "/ " ] 输出:2 解释:2x2 网格如下:

示例 2:

输入: [   " /",   " " ] 输出:1 解释:2x2 网格如下:

示例 3:

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

示例 4:

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

示例 5:

输入: [   "//",   "/ " ] 输出:3 解释:2x2 网格如下:

提示:

  1. 1 <= grid.length == grid[0].length <= 30
  2. grid[i][j] 是 '/'、'\'、或 ' '。

思路转换一下,然后再搜索就可以了。

最开始是将大小 * 2,但是在{"//", "/ "};这个案列中就错误了,仔细想想为什么。

然后换成 * 3的就可以了。

class Solution {
public:
vector<vector<bool> > Map;
vector<vector<bool> > Visit;
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
int N;
int regionsBySlashes(vector<string>& grid)
{
N = grid.size();
Map = vector<vector<bool> >(N * 3, vector<bool>(N * 3, false));
Visit = vector<vector<bool> >(N * 3, vector<bool>(N * 3, false));
int cntAns = 0;
for(int i = 0; i < N; i++)
{
for(int j = 0; j < grid[i].size(); j++)
{
if(grid[i][j] == '\\')
{
Map[3 * i][3 * j] = true;
Map[3 * i + 1][3 * j + 1] = true;
Map[3 * i + 2][3 * j + 2] = true;
}
else if(grid[i][j] == '/')
{
Map[3 * i][3 * j + 2] = true;
Map[3 * i + 1][3 * j + 1] = true;
Map[3 * i + 2][3 * j] = true;
}
}
}
/*
for(int i = 0; i < 3 * N; i++)
{
for(int j = 0; j < 3 * N; j++)
{
cout << Map[i][j] << (j == 3 * N - 1? '\n' : ' ');
}
}
//*/
for(int i = 0; i < 3 * N; i++)
{
for(int j = 0; j < 3 * N; j++)
{
if(Map[i][j] == false && Visit[i][j] == false)
{
cntAns++;
BFS(i , j);
}
}
}
return cntAns;
} void BFS(int x, int y)
{
queue<pair<int, int> > q;
q.push(make_pair(x, y));
Visit[x][y] = true;
while(!q.empty())
{
int i = q.front().first;
int j = q.front().second;
q.pop();
for(int k = 0; k < 4; k++)
{
int ii = i + dx[k];
int jj = j + dy[k];
if(ii < 0 || ii >= 3 * N || jj < 0 || jj >= 3 * N)
continue;
if(Visit[ii][jj] == true || Map[ii][jj] == true)
continue;
Visit[ii][jj] = true;
q.push(make_pair(ii, jj));
}
}
}
};

方法二:

并查集(未想出,带更新)

Leetcode959. Regions Cut By Slashes由斜杠划分区域的更多相关文章

  1. 【LeetCode】959. Regions Cut By Slashes 由斜杠划分区域(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 代码 日期 题目地址:https://leetcod ...

  2. LC 959. Regions Cut By Slashes

    In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank space.  Th ...

  3. [Swift]LeetCode959. 由斜杠划分区域 | Regions Cut By Slashes

    In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank space.  Th ...

  4. 【leetcode】959. Regions Cut By Slashes

    题目如下: In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank spac ...

  5. LeetCode 959. Regions Cut By Slashes

    原题链接在这里:https://leetcode.com/problems/regions-cut-by-slashes/ 题目: In a N x N grid composed of 1 x 1 ...

  6. mysql 列名中 包含斜杠或者空格的处理方式

    今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下. 问题描述 数据库的字段存在斜杠或者空格的时候,怎么用sql进行insert或者select操作. 问题解答 对于这种特 ...

  7. JAVA正则表达式中如何匹配反斜杠 \

    有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...

  8. (转载)PHPCMS V9专题路径多了一个斜杠的解决办法

    PHPCMSV9的专题,在设置生成静态并且网站的静态设置成生成在根目录的时候,专题路径的URL中会多出一个斜杠,如:http://www.2cto.com//special/ddos/ ,我只能说这是 ...

  9. 【转】python中的正斜杠、反斜杠

    原文地址:http://www.cnblogs.com/followyourheart1990/p/4270566.html 首先,"/"左倾斜是正斜杠,"\" ...

随机推荐

  1. Binary XML file line #23: Error inflating class android.widget.TextView

    分析一波,报错23行TextView的问题,但是检查了xml没有发现23行又TextView相关代码,就不应该继续纠结xml了,代码是通过R文件拿到xml资源的,你就应该怀疑是R文件的问题,R文件编译 ...

  2. css---6伪元素选择器

    after                   :在内容后边 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. Let's Encryt免费SSL证书申请[我司方案]

    Let's Encrypt颁发的证书是目前生产的大多数浏览器都信任的,您只需下载并运行Let's Encrypt客户端来生成一个证书即可. 在颁发证书之前,需要验证您的域名的所有权.首先,在您的主机上 ...

  4. day24 模块

     Python之路,Day12 = Python基础12 模块 本质为py程序 分类: 内置模块 time time.time() ---> 当前时间的时间戳:浮点型 time.localtim ...

  5. js 截取url中的参数

    getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var ...

  6. [JZOJ 5698] 密码锁

    思路: 差分+排序 #include <bits/stdc++.h> using namespace std; #define ll long long const int maxn = ...

  7. iOS之SceneKit.h文件简介

    1.SceneKit简介 SceneKit(SK)是WWDC12推出的OS X平台的Cocos 3D渲染引擎框架.支持粒子效果,物理模拟,脚本事件,多程渲染,支持iOS平台.SceneKit整合了Co ...

  8. Classpath in jar关于java加载第三方jar的集中方法和详细解释。

    转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...

  9. 安装MySql社区版(35-3)

    1,https://dev.mysql.com/ --------------------------------------------------------------------------- ...

  10. c# Data = select new{} 返回值的显示