79. Word Search
2016-03-28 23:40
281 查看
//起点的选取 //继续进行的条件 //终止的条件 //ac 16ms class Solution { public: bool search(vector<vector<char>>& board, string & word,int index,int x,int y,bool *flag) { if(index==word.size()) return true; int m=board.size(),n=board[0].size(); int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; for(int i=0;i<4;i++) { int x0=x+dir[i][0]; int y0=y+dir[i][1]; if(x0>=0&&y0>=0&&x0<m&&y0<n&&!flag[x0*n+y0]&&board[x0][y0]==word[index]) { flag[x0*n+y0]=true; if(search(board,word,index+1,x0,y0,flag)) return true; flag[x0*n+y0]=false; } } return false; } bool exist(vector<vector<char>>& board, string word) { int m=board.size(),n=board[0].size(); bool *flag =new bool[m*n]; memset(flag, false,sizeof(bool)*m*n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(board[i][j]==word[0]) { flag[i*n+j]=true; if(search(board,word,1,i,j,flag)) return true; flag[i*n+j]=false; } return false; } };
相关文章推荐
- hadoop生态系统学习之路(三)java实现上传文件(本地或ftp)至hdfs
- 快速排序算法
- POJ 1064 切绳子 二分搜索求一个可行解
- ES6学习小计
- 拉格朗日乘子法(编辑中)
- Eclipse默认字体CourierNew
- 重写equals 方法
- [Think In Java]基础拾遗4 - 并发
- NY145 聪明的小柯
- 又被拒了,心情不好
- Emmet
- 进程间通信之-信号量semaphore--linux内核剖析(十)
- LeetCode 231 Power of Two(三解)
- 无线键盘的安全性分析与探究
- StatePattern
- 【java】 java 集合类UML图
- 大整数加减乘除 c实现
- UVA679
- Android程序员的技术要求和学习路线
- 当你不优秀的时候,就让自己具有一些优秀的特质