荥阳市建设局网站室内设计学费一般多少
荥阳市建设局网站,室内设计学费一般多少,c语言做网站后台服务,网站建设总做总结题目
请设计一个函数#xff0c;用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始#xff0c;每一步可以在矩阵中向左#xff0c;向右#xff0c;向上#xff0c;向下移动一个格子。如果一条路径经过了…题目
请设计一个函数用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始每一步可以在矩阵中向左向右向上向下移动一个格子。如果一条路径经过了矩阵中的某一个格子则该路径不能再进入该格子。 例如 [[a,b,c,e],[s,f,c,s],[a,d,e,e]] 矩阵中包含一条字符串bcced的路径但是矩阵中不包含abcb路径因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后路径不能再次进入该格子。
数据范围0≤n,m≤20 , 1≤len≤25
示例1
输入[[a,b,c,e],[s,f,c,s],[a,d,e,e]],abcced
返回值true
示例2
输入[[a,b,c,e],[s,f,c,s],[a,d,e,e]],abcb
返回值false 解答
源代码
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param matrix char字符型二维数组 * param word string字符串 * return bool布尔型*/public boolean hasPath(char[][] matrix, String word) {// write code herefor (int i 0;i matrix.length; i) {for (int j 0; j matrix[0].length; j) {if (dfs(matrix, word.toCharArray(), i, j, 0)) {return true;}}}return false;}public boolean dfs(char[][] matrix, char[] word, int i, int j, int index) {if (i 0 || i matrix.length || j 0 || j matrix[0].length || matrix[i][j] ! word[index]) {return false;}if (index word.length - 1) {return true;}char temp matrix[i][j];matrix[i][j] .;boolean result dfs(matrix, word, i - 1, j, index 1) || dfs(matrix, word, i 1, j, index 1) ||dfs(matrix, word, i, j - 1, index 1) ||dfs(matrix, word, i, j 1, index 1);matrix[i][j] temp;return result;}
}
总结
递归回溯越界或当前字符和所需的不等则返回false否则判断当前是否为字符串的最后一个字符是则返回true。最后进行递归向当前字符的上下左右移动回溯前将当前字符标记以防止重复经过回溯结束之后将字符转换回来。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86903.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!