博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode - 被围绕的区域
阅读量:5318 次
发布时间:2019-06-14

本文共 1676 字,大约阅读时间需要 5 分钟。

1 class Solution { 2 public: 3     /* 4      * @param board: board a 2D board containing 'X' and 'O' 5      * @return: nothing 6      */ 7     bool flag[220][220]; 8     vector
> v; 9 const int dir[4][2] = {
{
0,1}, {
1,0}, {
0, -1}, {-1, 0}};10 int isChange = 1;11 void change_board(vector
> &board){12 for(size_t i = 0; i < v.size(); ++i){13 int x = v[i].first;14 int y = v[i].second;15 board[x][y] = 'X';16 }17 }18 void surroundedRegions(vector
> &board) {19 // write your code here20 memset(flag, 0, sizeof(flag));21 for(size_t i = 0; i < board.size(); ++i){22 for(size_t j = 0; j < board[i].size(); ++j){23 if(flag[i][j] == 0 && board[i][j] == 'O'){24 v.push_back(make_pair(i,j));25 bfs(i,j, board);26 if(isChange == 1){27 //printf("change:%d %d\n",i,j);28 change_board(board);29 }30 v.clear();31 isChange = 1;32 }33 }34 }35 }36 void bfs(int x, int y, vector
> board){37 queue
> que;38 que.push(make_pair(x,y));39 flag[x][y] = 1;40 while(!que.empty()){41 pair
p = que.front();42 que.pop();43 44 45 46 int nx = 0, ny = 0;47 for(int i = 0; i < 4; ++i){48 nx = p.first + dir[i][0];49 ny = p.second + dir[i][1];50 if(nx >= 0 && nx < board.size() && ny >= 0 && ny < board[0].size()){51 if(flag[nx][ny] == 0 && board[nx][ny] == 'O'){52 v.push_back(make_pair(nx, ny));53 que.push(make_pair(nx, ny));54 flag[nx][ny] = 1;55 }56 } else {57 // printf("dsad:%d %d\n",nx, ny);58 isChange = 0;59 }60 61 }62 }63 }64 };

dfs会爆栈 可以 bfs或者用栈模拟函数

转载于:https://www.cnblogs.com/GeniusYang/p/7544899.html

你可能感兴趣的文章
Windows Phone 7你不知道的8件事
查看>>
实用拜占庭容错算法PBFT
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
Node 中异常收集与监控
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>