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

品牌型网站建设方案个人网页制作成品 模板

品牌型网站建设方案,个人网页制作成品 模板,app开发合同模板最新版,seo第三方点击软件4943. 方格迷宫 - AcWing题库 1、题目 给定一个 n 行 m 列的方格矩阵。 行从上到下依次编号为 1∼n#xff0c;列从左到右依次编号为 1∼m。 第 i 行第 j 列的方格表示为 (i,j)。 矩阵中的方格要么是空地#xff08;用 . 表示#xff09;#xff0c;要么是陷阱#xf…4943. 方格迷宫 - AcWing题库 1、题目 给定一个 n 行 m 列的方格矩阵。 行从上到下依次编号为 1∼n列从左到右依次编号为 1∼m。 第 i 行第 j 列的方格表示为 (i,j)。 矩阵中的方格要么是空地用 . 表示要么是陷阱用 # 表示。 初始时你位于方格 (x₁,y₁)你需要前往方格 (x₂,y₂)。 每次移动你可以任选上、下、左、右四个方向之一并沿该方向移动 1∼k 步。 从一个方格移动至相邻方格视为一步。 但是你要保证在你的移动过程中不能走出矩阵也不能进入陷阱方格。 请你计算从方格 (x₁,y₁) 移动至方格 (x₂,y₂)所需要的最少移动次数。 保证方格 (x₁,y₁) 和方格 (x₂,y₂) 都是空地。 方格 (x₁,y₁) 和方格 (x₂,y₂) 可能是同一个方格。 注意注意区分本题中移动次数与移动步数的区别。 输入格式 第一行包含三个整数 n,m,k。 接下来 n 行每行包含 m 个字符其中第 i 行第 j 个字符要么是 .表示方格 (i,j) 是空地要么是 #表示方格 (i,j) 是陷阱。 最后一行包含四个整数 x₁,y₁,x₂,y₂。 输出格式 一个整数表示所需要的最少移动次数。 如果无法从方格 (x₁,y₁) 移动至方格 (x₂,y₂)则输出 -1。 数据范围 前 6 个测试点满足 1≤n,m≤10。 所有测试点满足 1≤n,m,k≤10001≤x₁,x₂≤n1≤y₂,y₂≤m。 输入样例1 3 4 4 .... ###. .... 1 1 3 1输出样例1 3输入样例2 3 4 1 .... ###. .... 1 1 3 1 输出样例2 8输入样例3 2 2 1 .# #. 1 1 2 2输出样例3 -1 2、题目解读 走迷宫_牛客题霸_牛客网 (nowcoder.com) 牛客网这题就是正常普通求解最短步数的迷宫问题而这题添加了一个条件每次移动你可以任选上、下、左、右四个方向之一并沿该方向移动 1∼k 步。这称为 一次移动。 我们使用BFS去正常解答这道题目时间复杂度为Onmk最大为10⁹这就会超时。 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int n,m,k,x1,x2,y1,y2;static char[][] ch;static int[][] move {{0,1},{0,-1},{1,0},{-1,0}};//四个方向偏移量static int inf0x3f3f3f3f;//初始化移动次数static int[][] ans;//记录移动次数public static void main(String[] args){Scanner scnew Scanner(System.in);nsc.nextInt();msc.nextInt();ksc.nextInt();ch new char[n][];ans new int[n][m];for(int i0;in;i){ch[i]sc.next().toCharArray();}x1sc.nextInt()-1;y1sc.nextInt()-1;x2sc.nextInt()-1;y2sc.nextInt()-1;for(int i0;in;i){//初始化移动次数Arrays.fill(ans[i],inf);}System.out.println(bfs());}public static int bfs(){ans[x1][y1]0;Queueint[] qnew LinkedList();q.add(new int[]{x1,y1,0});while(!q.isEmpty()){int[] a q.poll();for(int[] mo :move){//四个方向for(int i1;ik;i){//移动一次移动1-k步int xa[0]mo[0]*i,ya[1]mo[1]*i;if(x0||xn||y0||ym||ch[x][y]#){//不能出去不能跨越陷阱break;}if(ans[x][y]a[2]1){//修改移动次数ans[x][y]a[2]1;q.add(new int[]{x,y,a[2]1});}}}}//走完整个地图判断目的地是否可以走到return ans[x2][y2]inf?-1:ans[x2][y2];} }我们需要优化代码看下面图   所以我们应该 更新到格子发现不是最优就应该停止。这样时间复杂度就退化到了Onm 需要在判断条件处新加ans[x][y]a[2]1 3、代码 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int n,m,k,x1,x2,y1,y2;static char[][] ch;static int[][] move {{0,1},{0,-1},{1,0},{-1,0}};//四个方向偏移量static int inf0x3f3f3f3f;//初始化移动次数static int[][] ans;//记录移动次数public static void main(String[] args){Scanner scnew Scanner(System.in);nsc.nextInt();msc.nextInt();ksc.nextInt();ch new char[n][];ans new int[n][m];for(int i0;in;i){ch[i]sc.next().toCharArray();}x1sc.nextInt()-1;y1sc.nextInt()-1;x2sc.nextInt()-1;y2sc.nextInt()-1;for(int i0;in;i){//初始化移动次数Arrays.fill(ans[i],inf);}System.out.println(bfs());}public static int bfs(){ans[x1][y1]0;Queueint[] qnew LinkedList();q.add(new int[]{x1,y1,0});while(!q.isEmpty()){int[] a q.poll();for(int[] mo :move){//四个方向for(int i1;ik;i){//移动一次移动1-k步int xa[0]mo[0]*i,ya[1]mo[1]*i;//不能出去不能跨越陷阱还有更新到格子发现不是最优就应该停止if(x0||xn||y0||ym||ch[x][y]#||ans[x][y]a[2]1){break;}if(ans[x][y]a[2]1){//修改移动次数ans[x][y]a[2]1;q.add(new int[]{x,y,a[2]1});}}}}//走完整个地图判断目的地是否可以走到return ans[x2][y2]inf?-1:ans[x2][y2];} }
http://www.hkea.cn/news/14451581/

相关文章:

  • 一起做网店潮汕站百度网站怎么做信息
  • 温州做网站哪家公司最好一般做网站是用什么语言开发的
  • 做asp网站的步骤cnzz 网站域名怎么填
  • 福州网站建设流程wordpress阿里云
  • 商城建设方案班级优化大师app
  • 杭州手机网站制作公司网站后台管理怎么做
  • 网站后台进入突然不显示网络营销典型企业
  • 百度网站开发语言做食品网站需要什么资质
  • 深圳企业建站模板怎样做网站的优化
  • 晚上奖励自己的网站推荐wordpress 设计网页
  • 网站效果代码wordpress模板自适应
  • 苏州有做网站的公司吗wordpress短信插件
  • 广州力科网站建设公司工程师证怎么考取需要什么条件
  • 在线答题网站开发网页制作标题设置步骤
  • 开发网站建设公司网站开发竞争性谈判
  • 摄影创意网站医院网站 功能
  • 养老保险网站手机端开发
  • 网站建设费走什么科目icons8官网
  • 网站开发 资质东莞网站推广企业
  • 网站建站服务公司wordpress后台模板位置
  • 网站建设周记网络营销概述
  • 南山公司网站建设平面设计线上培训班哪个好
  • 北海做网站有哪家好商务网站开发步骤
  • 开网站购买的服务器放自己家还是放别人那里中山企业网
  • 徐州市铜山区建设局网站提供响应式网站建设
  • 免费网站建设招商wamp搭建多个网站
  • 天津机械网站建设模板北京网页设计公司排名
  • 做文学网站算不算开公司香河做网站公司
  • 镇江网站排名优化价格优秀网站开发公司
  • 武冈网站建设哪家好免费wordpress主题