Leetcode959. Regions Cut By Slashes由斜杠划分区域
在由 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 <= grid.length == grid[0].length <= 30
- 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由斜杠划分区域的更多相关文章
- 【LeetCode】959. Regions Cut By Slashes 由斜杠划分区域(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题思路 代码 日期 题目地址:https://leetcod ...
- 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 ...
- [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 ...
- 【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 ...
- 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 ...
- mysql 列名中 包含斜杠或者空格的处理方式
今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下. 问题描述 数据库的字段存在斜杠或者空格的时候,怎么用sql进行insert或者select操作. 问题解答 对于这种特 ...
- JAVA正则表达式中如何匹配反斜杠 \
有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...
- (转载)PHPCMS V9专题路径多了一个斜杠的解决办法
PHPCMSV9的专题,在设置生成静态并且网站的静态设置成生成在根目录的时候,专题路径的URL中会多出一个斜杠,如:http://www.2cto.com//special/ddos/ ,我只能说这是 ...
- 【转】python中的正斜杠、反斜杠
原文地址:http://www.cnblogs.com/followyourheart1990/p/4270566.html 首先,"/"左倾斜是正斜杠,"\" ...
随机推荐
- BCZM : 1.6
https://blog.csdn.net/kabini/article/details/2311946 题目大意: 水房能容纳饮料的总量是V,有一批饮料,每种饮料单个容量都是2的方幂,每种饮料信息如 ...
- PKUSC加油加油加油!
一句话,把学过的掌握的甚至还未掌握的,都用上吧! 1.题目不要再再再看错了!在纸上记下关键字. 2.记得有预处理这个东西可以降低复杂度! 3.仔细阅读数据范围,取值范围的0要注意! 4.不要每次像开新 ...
- LeetCode第六题—— ZigZag Conversion(字符串的“之”字形转换)
题目描述: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows ...
- Oracle18C安装后首次创建数据库并用sql developer 创建连接和用户
注意: SQL Developer 不能用于创建Oracle数据库,只能用来连接已经创建的数据库,数据库的建立要通过Database Configuration Assistant(DBCA)来完成. ...
- phonegap 开发指南系列----开始之前(1)
在基于任何平台(安卓.ios等phonegap支持的平台)上做phonegap开发之前,需要安装 cordova 的 command-line interface (CLI) .CLI详细:http: ...
- Python自学:第四章 在for循环中执行更多操作(2)
# -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...
- 文件的操作repeat
#_author:来童星#date:2019/12/15import os#1# print(os.name)# nt------>windows操作系统#2 用于获取当前操作系统的换行符# p ...
- duilib教程之duilib入门简明教程7.XML基础类
现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...
- POJ 3134 - Power Calculus
迭代加深 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<al ...
- AutoLayout(自动布局)入门
这是WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里.如果您是首次来到本站,也许您会有兴趣通过RSS的方式订阅本站. AutoLayout在去年的WWDC上被引入Cocoa,而在今年的WW ...