LintCode 132-单词搜索II 深度优先
来源:互联网 发布:威锋论坛mac office 编辑:程序博客网 时间:2024/05/22 10:24
本人电子系,只为一学生。心喜计算机,小编以怡情。
给出一个由小写字母组成的矩阵和一个字典。找出所有同时在字典和矩阵中出现的单词。一个单词可以从矩阵中的任意位置开始,可以向左/右/上/下四个相邻方向移动。
样例
给出矩阵:
doaf
agai
dcan
和字典:
{“dog”, “dad”, “dgdg”, “can”, “again”}
返回 {“dog”, “dad”, “can”, “again”}
思路:
遍历字符矩阵
深度优先搜索判断是否存在解
static public ArrayList<String> wordSearchII(char[][] board, ArrayList<String> words) { // write your code here int flag[]={0};//定义是否找到解得确认标志 int [][]next={{-1,0},{0,1},{1,0},{0,-1}};//定义四个搜索方向 int visited[][]=new int [board.length][board[0].length];//定义已经走过的数组 ArrayList<String>temp=new ArrayList<String>(words);//用来备份 for(String can:temp) { label: for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[0].length; j++) { if (can.charAt(0) == board[i][j]) { visited[i][j]=1;//标记当前走过 isin(board, can, i, j, flag,1,next,visited);//调用递归函数 visited[i][j]=0;//取消标记 if (flag[0]==1) { break label;//退出所有内层循环 } } } } if (flag[0]==0) {//如果没找到 words.remove(can); } flag[0]=0;//无论找没找到都要置零 } return words; } //深度优先搜索static public void isin(char[][]board,String can,int i,int j,int flag[],int count,int [][]next,int visited[][]) { if(count>=can.length()) {//长度超出,证明找到了 flag[0]=1; return; } else{ for(int k=0;k<4;k++)//搜索四个方向 { int m=i+next[k][0];//坐标 int n=j+next[k][1]; if(m<0||m>board.length-1||n<0||n>board[0].length-1) continue; if(board[m][n]==can.charAt(count)&&visited[m][n]==0)//如果是当前的字符对应候选那一位,并且没走过的话 { visited[m][n]=1;//标记已走过 isin(board,can,m,n,flag,count+1,next,visited); visited[m][n]=0;//取消标记 } } } }
0 0
- LintCode 132-单词搜索II 深度优先
- LintCode 单词搜索 II
- LintCode : 单词搜索 II
- 单词搜索 II-LintCode
- LintCode 120-单词接龙 广度优先搜索
- Lintcode:拓扑排序(深度优先搜索,广度优先搜索)
- 深度优先搜索——单词方阵
- 洛谷Oj-单词接龙-深度优先搜索
- 【算法】深度优先搜索(DFS)II
- LintCode-单词接龙II
- 单词接龙 II-LintCode
- 单词拆分II-LintCode
- lintcode-单词搜索-123
- lintcode ----单词搜索
- lintcode,单词搜索
- 单词搜索 -LintCode
- lintcode --单词搜索
- 普及练习场 深度优先搜索 单词接龙
- 动物王国代表大会(下)
- CUDA 初体验
- 单个字符的输入输出函数
- 大数据运营(一)
- 域名背后的真相,一个黑产团伙的沦陷
- LintCode 132-单词搜索II 深度优先
- 支付行业(银联/支付宝/微信支付)
- 开源性能测试工具--Jmeter介绍+安装说明!!!
- android 开机向导中wifi界面无法跳过,
- angularJs 个人初探笔记
- Android中开发环境的配置(AS环境)
- NTOJ305表达式求值
- Love2D conf配置文件
- JS类与继承