95 由斜杠划分区域(959)
作者:
晚于: 2020-09-09 12:00:00后提交分数乘系数50%
问题描述 :
在由 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 网格如下:
可使用如下main函数:
int main()
{
int n;
vector<string> grid;
string line;
cin>>n;
cin.get();
for(int i=0; i<n; i++)
{
getline(cin,line);
grid.push_back(line);
}
int res=Solution().regionsBySlashes(grid) ;
cout<<res;
}
输入说明 :
首先输入网格的大小N,1 <= N <= 30
然后输入N行,每行N个字符,每个字符是 '/'、'\'、或 ' '。
输出说明 :
输出结果
输入范例 :
输出范例 :
#include <iostream> #include <string> #include <vector> #include <map> #include <algorithm> using namespace std; class Solution { public: vector<int> f; int find(int x) { return x==f[x] ? x : f[x]=find(f[x]); } int merge(int u, int v) { int fu = find(u), fv = find(v); if (fu == fv) return 0; f[fv] = fu; return 1; } int regionsBySlashes(vector<string>& grid) { int n = grid.size(); f = vector<int>((n+1)*(n+1), 0); for (int i = 0; i < (n+1)*(n+1); ++i) { f[i] = i; } for (int i = 0; i < n; ++i) { merge(i, i+1); merge(n*(n+1)+i, n*(n+1)+i+1); merge(i*(n+1), (i+1)*(n+1)); merge(i*(n+1)+n, (i+1)*(n+1)+n); } int cnt = 1; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (grid[i][j] == ' ') continue; int u, v; if (grid[i][j] == '/') { u = i*(n+1)+j+1; v = (i+1)*(n+1)+j; } else { u = i*(n+1)+j; v = (i+1)*(n+1)+j+1; } if (!merge(u, v)) cnt++; } } return cnt; } }; int main() { int n; vector<string> grid; string line; cin>>n; cin.get(); for(int i=0; i<n; i++) { getline(cin,line); grid.push_back(line); } int res=Solution().regionsBySlashes(grid) ; cout<<res; } //https://leetcode-cn.com/problems/regions-cut-by-slashes/solution/c-cha-bing-ji-by-ekulelu-3/ //https://leetcode-cn.com/problems/regions-cut-by-slashes/solution/c-bing-cha-ji-tong-guo-xie-gang-liang-ding-dian-sh/
posted on 2020-09-15 21:12 Hi!Superman 阅读(186) 评论(0) 编辑 收藏 举报