lintcode - 被围绕的区域
class Solution {
public:
/*
* @param board: board a 2D board containing 'X' and 'O'
* @return: nothing
*/
bool flag[][];
vector<pair<int, int>> v;
const int dir[][] = {{,}, {,}, {, -}, {-, }};
int isChange = ;
void change_board(vector<vector<char>> &board){
for(size_t i = ; i < v.size(); ++i){
int x = v[i].first;
int y = v[i].second;
board[x][y] = 'X';
}
}
void surroundedRegions(vector<vector<char>> &board) {
// write your code here
memset(flag, , sizeof(flag));
for(size_t i = ; i < board.size(); ++i){
for(size_t j = ; j < board[i].size(); ++j){
if(flag[i][j] == && board[i][j] == 'O'){
v.push_back(make_pair(i,j));
bfs(i,j, board);
if(isChange == ){
//printf("change:%d %d\n",i,j);
change_board(board);
}
v.clear();
isChange = ;
}
}
}
}
void bfs(int x, int y, vector<vector<char>> board){
queue<pair<int, int>> que;
que.push(make_pair(x,y));
flag[x][y] = ;
while(!que.empty()){
pair<int, int> p = que.front();
que.pop();
int nx = , ny = ;
for(int i = ; i < ; ++i){
nx = p.first + dir[i][];
ny = p.second + dir[i][];
if(nx >= && nx < board.size() && ny >= && ny < board[].size()){
if(flag[nx][ny] == && board[nx][ny] == 'O'){
v.push_back(make_pair(nx, ny));
que.push(make_pair(nx, ny));
flag[nx][ny] = ;
}
} else {
// printf("dsad:%d %d\n",nx, ny);
isChange = ;
}
}
}
}
};
dfs会爆栈 可以 bfs或者用栈模拟函数
lintcode - 被围绕的区域的更多相关文章
- lintcode:被围绕的区域
被围绕的区域 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O X X ...
- [Swift]LeetCode130. 被围绕的区域 | Surrounded Regions
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- 【1】【leetcode-130】 被围绕的区域
(DFS思路对,写复杂了) 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O ...
- 286被围绕的区域 · Surrounded Regions
[抄题]: 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O X X ...
- lintcode-477-被围绕的区域
477-被围绕的区域 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O ...
- 130 Surrounded Regions 被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O), 找到所有被 'X' 围绕的区域.并将区域里所有 'O'用 'X' 填充.例如,X X X XX O O XX X O XX O X X运行你 ...
- Leetcode之深度优先搜索(DFS)专题-130. 被围绕的区域(Surrounded Regions)
Leetcode之深度优先搜索(DFS)专题-130. 被围绕的区域(Surrounded Regions) 深度优先搜索的解题详细介绍,点击 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O) ...
- LeetCode 被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- LeetCode 130. 被围绕的区域(Surrounded Regions)
题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X ...
随机推荐
- HTTP、TCP、UDP、Socket关系详解
TCP.UDP和HTTP关系是什么? 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP ...
- __get(),__set(),__isset(),__unset()
__get(),__set(),__isset(),__unset() 在给不可访问属性赋值时,__set()会被调用读取不可访问属性的值时,__get()会被调用 当对不可访问属性调用isset() ...
- Node.js的__dirname,__filename,process.cwd(),./的含义
简单说一下这几个路径的意思,: __dirname: 获得当前执行文件所在目录的完整目录名 __filename: 获得当前执行文件的带有完整绝对路径的文件名 process.cwd():获得当前执行 ...
- Linux tee命令
一.简介 tee以标准输入作为输入,标准输出和文件作为输出. 二.语法 Usage: tee [OPTION]... [FILE]... Copy standard input to each F ...
- R: 正则表达式
正则表达式: 例:sub("a","",c("abcd","dcba")): [1] "bcd" ...
- GCD 学习(三)Main&Global Dispatch Queue
摘录自:http://zhuyanfeng.com/archives/3066 Main Dispatch Queue是在主线程中执行任务的Dispatch Queue.因为主线程只有1个,所以Mai ...
- ZROI2018提高day1t2
传送门 分析 考场上看错了第一个条件,于是觉得是个简单贪心,随便取了每一个点的最大收益然后算了一下,就得了40pts...看来读对题很重要呀qwq.实际的正解是这样的:我们将每一个i与f[i]连一条边 ...
- Luogu 2149 [SDOI2009]Elaxia的路线
感觉这题可以模板化. 听说spfa死了,所以要练堆优化dijkstra. 首先对$x_{1},y_{1},x_{2},y_{2}$各跑一遍最短路,然后扫一遍所有边看看是不是同时在两个点的最短路里面,如 ...
- Entity Framework Tutorial Basics(37):Lazy Loading
Lazy Loading: One of the important functions of Entity Framework is lazy loading. Lazy loading means ...
- 解决.jsp及静态资源文件访问404的问题
我们在做Web项目时,经常将.jsp文件放到webapp\WEB-INF下,这时,我们访问jsp等文件的时候,就会报404. 如果是纯前后端分离的项目,后端只返回数据,不处理页面,也没问题.但,有时我 ...