当前位置: 首页 > 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://wiki.neutronadmin.com/news/120616/

相关文章:

  • 保定网站建设培训班制作企业网站的app
  • 不懂代码怎么做网站有了域名之后怎么做网站
  • 谷歌网站为什么打不开上海做兼职上哪个网站
  • 做外贸仿牌网站wordpress怎么破解
  • 做网站和小程序的区别摄影网页设计方案
  • 大兴做网站wordpress例行维护
  • 怎样做自己的销售网站6西安性价比高的装修公司
  • 做网站写页面多少钱广州安全教育平台登录
  • 福建福清市住房和建设局网站建筑工程网上流程工作失误
  • 做网站登入见面文字排版都用哪些网站
  • 网站备案花钱么做视频网站要多大的服务器
  • 网站开发公司会计处理qq网页版手机版
  • 商务网站内容维护和管理的范围蒙牛网站建设报价情况
  • 网站图片设计制作网站搜索引擎优化是什么
  • 简述从网站规划的角度常见的网站模式网站开发制作公司排行
  • 合肥快速建站在线咨询在线crm系统功能模块分析
  • 义乌购物网站建设多少钱洛阳信息网
  • 网站备案 谁接入谁负责河北省住房和城乡建设厅网站
  • 梭子手做鱼网站杭州企业推广网站
  • 电子商务企业网站建设实训报告谈谈你在建设主题资源网站时
  • 网站怎么做页面解析跳转珠海公司做网站
  • seo快速排名首页长沙网站优化推广方案
  • 漯河市万金镇网站建设做网站学什么代码
  • 搭建网站多少钱自动提取关键词的软件
  • 食品企业网站建设方案怎么用小旋风网站建设教程
  • 网站模版 之星万方网官网入口
  • 外贸做网站的好处看广告得收益的app
  • 有哪个网站可以查别人做没做过牢吗太原关键词优化服务
  • 网站开发语言怎么查最新国际军事动态和军事战争
  • 免费网站服务器2020wordpress 设置多域名 一个站点