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

广州机械网站建设外包山东鑫泰建设集团网站

广州机械网站建设外包,山东鑫泰建设集团网站,网络维修,广东微信网站推广哪家专业【问题描述】 [中等] 地上有一个m行n列的方格#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动#xff0c;它每次可以向左、右、上、下移动一格#xff08;不能移动到方格外#xff09;#xff0c;也不能进入行坐标和列坐标的数位之和…【问题描述】 [中等] 地上有一个m行n列的方格从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动它每次可以向左、右、上、下移动一格不能移动到方格外也不能进入行坐标和列坐标的数位之和大于k的格子。例如当k为18时机器人能够进入方格 [35, 37] 因为353718。但它不能进入方格 [35, 38]因为353819。请问该机器人能够到达多少个格子示例 1 输入m 2, n 3, k 1 输出3 示例 1输入m 3, n 1, k 0 输出1 提示 1 n,m 100 0 k 20 【解答思路】 题目分析:题意是一个人从00开始向走可以走四个方向它下一个走到的地方的坐标数位之和不超过k问这个人最多可以走多少个格子 1. DFS 从起点开始用深搜的方式遍历矩阵 只向下或者向右控制深搜边界的同时判断当前访问的位置数位和是否小于等于k需要一个标记数组记录每个位置的访问情况防止重复计算 时间复杂度O(N^2) 空间复杂度O(N) class Solution {int m,n,k; public int movingCount(int m, int n, int k) {this.mm;this.nn;this.kk;//标记访问过的位置boolean[][] visitednew boolean[m][n];return dfs(0,0,0,visited); }/*** 深搜* param i 横坐标* param j 纵坐标* param sum 坐标数位和* param visited 标记数组* return*/ private int dfs(int i, int j, int sum, boolean[][] visited) {//如果 坐标越界 或者 数位和大于k 或者 已经访问过则停止当前方向的深搜if (im||jn||sumk||visited[i][j])return 0;//标记为已访问visited[i][j]true;//向下或者向右深搜return 1dfs(i1,j,sums(i1,j),visited)dfs(i,j1,sums(i,j1),visited); }//计算数位和 public int sums(int x,int y){int ans0;while (x ! 0) {ansx%10;x/10;}while (y ! 0) {ansy%10;y/10;}return ans; }}2. BFS(队列) 从起点开始用深搜的方式遍历矩阵 只向下或者向右控制深搜边界的同时判断当前访问的位置数位和是否小于等于k需要一个标记数组记录每个位置的访问情况防止重复计算 时间复杂度O(N) 空间复杂度O(N) //时间复杂度O(mn) public int movingCount(int m, int n, int k) {//队列保存坐标Queueint[] queuenew ArrayDeque();//标记数组boolean[][] visitednew boolean[m][n];//广搜queue.add(new int[]{0,0});int count0;visited[0][0]true;while (!queue.isEmpty()) {int[] poll queue.poll();count;//向下、向右寻找符合要求的位置入队并标记访问状态//不越界 并且 数位和小于等于k 并且 未访问过if (poll[0] 1 m sums(poll[0] 1, poll[1]) k!visited[poll[0]1][poll[1]]){queue.add(new int[]{poll[0]1,poll[1]});visited[poll[0]1][poll[1]]true;}if (poll[1] 1 n sums(poll[0], poll[1] 1) k!visited[poll[0]][poll[1] 1]){queue.add(new int[]{poll[0],poll[1]1});visited[poll[0]][poll[1]1]true;}}return count; } //计算数位和 public int sums(int x,int y){int ans0;while (x ! 0) {ansx%10;x/10;}while (y ! 0) {ansy%10;y/10;}return ans; } 【总结】 1. BFS 确定递归参数终止条件标记数组记录每个位置的访问情况计数在递归回溯中 同广度 2. DFS 队列 出队后搜索符合条件入队终止条件标记数组记录每个位置的访问情况计数在所有相同深度出完队列之后 3. BFS DFS 分步思考 效果佳 4.100以内数之和
http://www.huolong8.cn/news/120616/

相关文章:

  • 网站地图提交地址做汽车团购网站有哪些
  • 网站代码跑偏了怎么做win7iis添加网站
  • 工信部网站备案进度查询wordpress提高浏览量
  • 做网站泉州网站建设小白到精通需要
  • 梵克雅宝为什么那么贵seo怎么推排名
  • 自建商城网站用什么技术好抓取工具把对手网站的长尾词
  • 顺德营销型网站一站式服务哪家好建设返利网站
  • 免费建手机网站的软件做网站的得花多钱
  • 魔方优化大师官网济宁seo优化公司
  • 网络推广 公司 200个网站wordpress和iss
  • 河南住房与城乡建设部网站wordpress收件邮箱
  • 营销型网站核心要素有哪些网站建设与管理培训方案
  • 广州网站设计制作做网站开发需要考什么证书
  • 网站接入服务提供商网站内部链接优化
  • 重庆网站模板建站公司爱采购
  • 华泰保险公司官方网站怎么知道网站关键词的搜索来源
  • 彩票网站开发制作软件好看的网站排版
  • 类似千图网的素材网站大德通众包网站建设
  • 电子商务物流网站建设规划方案品牌网站建设市场
  • 响应式网页设计名词解释郑州做网站优化的公
  • 徐州市网站开发建立个机密网站
  • 怎么看网站用的什么后台百度ai智能写作工具
  • 国内建站平台有哪些成都网站建设千古互联
  • 网站建设财务规划wordpress手机中文版下载地址
  • 网站被k怎么办佛山市品牌网站建设价格
  • 网站加速cdnWordpress炫酷特效
  • 小白怎么建设网站海淀网站制作
  • 国外做外汇网站交流建设银行支付宝网站
  • 世界建筑设计网站深圳网站设计公司电话
  • 深圳网站建设_请到中投网络互动网站