当前位置: 首页 > news >正文

网站设计步骤包括哪些androidapp开发教程

网站设计步骤包括哪些,androidapp开发教程,长沙中小企业做网站,做网站如何让用户注册【问题描述】[中等] 请设计一个函数#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始#xff0c;每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格#xff0c;那么该路径不能再次进入…【问题描述】[中等] 请设计一个函数用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格那么该路径不能再次进入该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径路径中的字母用加粗标出。[[a,b,c,e], [s,f,c,s], [a,d,e,e]]但矩阵中不包含字符串“abfb”的路径因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后路径不能再次进入这个格子。示例 1输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word ABCCED 输出true 示例 2输入board [[a,b],[c,d]], word abcd 输出false 提示1 board.length 200 1 board[i].length 200 【解答思路】 DFS 时间复杂度 class Solution {public boolean exist(char[][] board, String word) {char[] words word.toCharArray();for(int i 0; i board.length; i) {for(int j 0; j board[0].length; j) {if(dfs(board, words, i, j, 0)) return true;}}return false;}boolean dfs(char[][] board, char[] word, int i, int j, int k) {if(i board.length || i 0 || j board[0].length || j 0 || board[i][j] ! word[k]) return false;if(k word.length - 1) return true;char tmp board[i][j];board[i][j] /;boolean res dfs(board, word, i 1, j, k 1) || dfs(board, word, i - 1, j, k 1) || dfs(board, word, i, j 1, k 1) || dfs(board, word, i , j - 1, k 1);board[i][j] tmp;return res;} }归搜索匹配字符串过程中需要 board[i][j] ‘/’ 来防止 ”走回头路“ 。当匹配字符串不成功时会回溯返回此时需要board[i][j] tmp 来”取消对此单元格的标记”。 在DFS过程中每个单元格会多次被访问的 board[i][j] /只是要保证在当前匹配方案中不要走回头路。 一层一层向下递归来进行字符串匹配的回溯的时候要“释放“这个单元格。匹配失败或者成功都会执行 board[i][j] tmp 匹配成功也需要将 True 结果一层一层返回直至起始点以获取匹配成功的结果 class Solution {private int[][] direct {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};private boolean[][] visited;public boolean exist(char[][] board, String word) {char[] words word.toCharArray();int row board.length;int col board[0].length;this.visited new boolean[row][col];for (int i 0; i row; i) {for (int j 0; j col; j) {if (dfs(board, i, j, words, 0)) {return true;}}}return false;}private boolean dfs(char[][] board, int x, int y, char[] word, int index) {if (board[x][y] word[index]) {if (index 1 word.length) {return true;}visited[x][y] true;for (int i 0; i 4; i) {int newX x direct[i][0];int newY y direct[i][1];if (inArea(newX, newY, board.length, board[0].length) !visited[newX][newY]) {if (dfs(board, newX, newY, word, index 1)) {return true;}}}visited[x][y] false;}return false;}private boolean inArea(int x, int y, int row, int col) {return x 0 y 0 x row y col;} }【总结】 1.细节 1.1 方向数组 private int[][] direct {{-1, 0}, {0, -1}, {1, 0}, {0, 1}}; 1.2 char[] words word.toCharArray(); 替代Sting.charAt()charAt每次都要检查边界 1.3 边界判定 private boolean inArea(int x, int y, int row, int col) { return x 0 y 0 x row y col; } } 2.回溯 遍历时对原结果有影响 在dfs递归前后置状态-恢复状态 visited[x][y] true;dfsvisited[x][y] false;3. 算法原理 深度优先搜索 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归先朝一个方向搜到底再回溯至上个节点沿另一个方向搜索以此类推。 剪枝 在搜索中遇到 这条路不可能和目标字符串匹配成功 的情况例如此矩阵元素和目标字符不同、此元素已被访问则应立即返回称之为 可行性剪枝 。 转载链接https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/solution/mian-shi-ti-12-ju-zhen-zhong-de-lu-jing-shen-du-yo/
http://www.yutouwan.com/news/233918/

相关文章:

  • ImQQ网站是怎么做的网页设计教程 表单
  • 祝明电子商务网站建设实验报告商务信息网
  • 免费设计字体wordpress结构优化插件
  • 怎样删除网站虚拟主机内容wordpress 安装 godaddy在哪里 上传的根目录
  • 一个高端的网站设计国外企业网络平台
  • 网站侧边菜单wordpress盲注
  • 专门做设计的网站德阳网站建设ghxhwl
  • 网站建设使用的什么软件有哪些方面伊宁市做网站
  • 织梦网站专题模板下载图展网站源码
  • 注册域名查询网站官网wordpress 文章内
  • 河北建设网站首页黑龙省建设厅网站首页
  • 网站后台栏目营销型网站制作公司
  • 怎么做网站申请广告企业网站管理名词解释
  • 东莞樟木头哪里有做网站的wordpress横菜单间隔
  • 郑州网站建设zhuotop做网站上传视频
  • 北京网站托管公司查询单位信息的网站
  • 网上的彩票网站是怎么做的中国做民宿的网站
  • 做动态影集的网站网页站点怎么命名
  • 免费主机空间网站wordpress ajax登录
  • 公司网站制作设计报价企业网站设计总结
  • 网站建设预算计算方法从零开始建设网站
  • net网站建设多少前u钙网免费设计头像
  • 做网站网络泗洪做网站
  • 有什么做酒和水果茶教程的网站个人怎么创建公众号
  • 深圳建网站找哪家温岭建设网站
  • 建设网站时怎么用外部字体网站有收录没排名
  • 建设网站了还能消除吗2015年网站设计
  • 一个销售网站的设计方案网站网页制作电话
  • 网站做多个产品网站建设合同按什么交印花税
  • dede网站不能运行php文件数据中台系统