ios笔试题算法_微软笔试题-Dijkstra算法

fb162a1028f8213bbab2441f90093a71.png
Dijkstra算法是典型的算法。Dijkstra算法是很有代表性的算法。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。      
用Dijkstra算法求解无向图的最短路径 - 潘建锋 | Mind Seeker​taohuawu.club

微软编程比赛里面的一道难度系数5%的编程题目如下:

bacb9ba51b1ecd2b61bc1189e85daf2f.png

577fc602d01422b8ab2b39da7cb15766.png

Dijkstra算法是用来求解图中顶点到另外其他顶点的最短路径的,根据题目,我们可以把每两个岛屿往来所花的最少金币当成图中的边权值,由此可以用Dijkstra算法来解决这个问题。

19c8ee37a0300f42d7b96ed07b8ac7b3.png

根据图来建立权值矩阵:

int[][] W = { { 0, 1, 5, -1, -1, -1,-1,-1 ,-1}, { 1, 0, 3, 7, 5, -1,-1,-1,-1}, { 5, 3, 0, -1, 1, 7, -1,-1,-1,-1 }, { -1, 7, -1, 0, 2, -1,3,-1,-1 }, { -1, 5, 1, 2, 0, 3, 6, 9,-1}, {-1,-1,-1, 3,6,-1, 0, 2, 7} {-1,-1,-1,-1,9,5,2, 0, 4} {-1,-1,-1,-1,-1,-1, 7, 4, 0} };
// (-1表示两边不相邻,权值无限大)

最终实现如下(java):

package wxt;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;//这个算法用来解决无向图中任意两点的最短路径  
public class Dijkstra {public static int dijkstra(int[][] W1, int start, int end) {  boolean[] isLabel = new boolean[W1[0].length];// 是否标号  int[] indexs = new int[W1[0].length];// 所有标号的点的下标集合,以标号的先后顺序进行存储,实际上是一个以数组表示的栈  int i_count = -1;//栈的顶点  int[] distance = W1[start].clone();// v0到各点的最短距离的初始值  int index = start;// 从初始点开始int presentShortest = 0;//当前临时最短距离  indexs[++i_count] = index;// 把已经标号的下标存入下标集中  isLabel[index] = true;  while (i_count<W1[0].length) {  // 第一步:标号v0,即w[0][0]找到距离v0最近的点  int min = Integer.MAX_VALUE;  for (int i = 0; i < distance.length; i++) {  if (!isLabel[i] && distance[i] != -1 && i != index) {  // 如果到这个点有边,并且没有被标号  if (distance[i] < min) {  min = distance[i];  index = i;// 把下标改为当前下标  }  }  }  if (index == end) {//已经找到当前点了,就结束程序  break;  }  isLabel[index] = true;//对点进行标号  indexs[++i_count] = index;// 把已经标号的下标存入下标集中  if (W1[indexs[i_count - 1]][index] == -1 || presentShortest + W1[indexs[i_count - 1]][index] > distance[index]) {  // 如果两个点没有直接相连,或者两个点的路径大于最短路径  presentShortest = distance[index];  } else {  presentShortest += W1[indexs[i_count - 1]][index];  }  // 第二步:将distance中的距离加入vi  for (int i = 0; i < distance.length; i++) {  // 如果vi到那个点有边,则v0到后面点的距离加  if (distance[i] == -1 && W1[index][i] != -1) {// 如果以前不可达,则现在可达了  distance[i] = presentShortest + W1[index][i];  } else if (W1[index][i] != -1 && presentShortest + W1[index][i] < distance[i]) {  // 如果以前可达,但现在的路径比以前更短,则更换成更短的路径  distance[i] = presentShortest + W1[index][i];  }  }  }  //如果全部点都遍历完,则distance中存储的是开始点到各个点的最短路径  return distance[end] - distance[start];  }  private static class Island{public int x,y;}public static void main(String[] args) {  ArrayList<Island> arr=new ArrayList<Island>();// 建立一个权值矩阵  int [][] Test={{0,1,4},{1,0,1},{4,1,0}};Scanner input=new Scanner(System.in);int num=input.nextInt();for (int i = 0; i < num; i++) {Island island=new Island();island.x=input.nextInt();island.y=input.nextInt();arr.add(island);}int [][] t=new int[num][num];for (int i = 0; i < t.length; i++) {for (int j = 0; j < t.length; j++) {t[i][j]=Math.min(Math.abs(arr.get(i).x-arr.get(j).x), Math.abs(arr.get(i).y-arr.get(j).y));}}System.out.println(dijkstra(t, 0,num-1));  }  
}

我是潘少,人生这么长,做个有趣的人,写点有趣的文字。此文章首发于我的个人公众号 - 潘建锋,欢迎关注,代码、故事、灵魂,那里都有。

关于我​mp.weixin.qq.com
4da6d6833cf8222dd0cceeb47c5a0405.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶车通过动作捕捉,学会阅读街上人们的肢体语言

来源&#xff1a;机器学习研究组订阅号 编译&#xff1a;lin想象一下&#xff0c;工人正在修复路面上一个大坑洞&#xff0c;因此拥有四条车道的马路缩小为两车道。一名工人左手松松地举着停车标志&#xff0c;用右手挥手示意汽车通过。如果是人来开车的话&#xff0c;自然不会…

AI解梦成为现实 未来还有无限可能

文章来源&#xff1a;学术头条编译&#xff1a;阳光排版&#xff1a;赵辰霞编审&#xff1a;王新凯古代巴比伦人认为梦境包含了预言&#xff0c;而古埃及人则将梦境视为神灵给予的信息来崇拜。在 19 世纪 90 年代&#xff0c;西格蒙德弗洛伊德&#xff08;Sigmund Freud&#x…

fiddler工具条、状态栏、请求信息栏各按钮的作用

1.fiddler工具条 2.fiddler状态栏 3.请求信息栏 转载于:https://www.cnblogs.com/kakaln/p/8198299.html

超9成SCI论文发在国外!中文期刊到底差在哪?

来源 | 科学网撰文 | 卜叶编辑 | 宗华学术界不投中文期刊的原因是什么&#xff1f;这一老生常谈的问题&#xff0c;最近再次出现在某知识问答平台热榜。短短两周&#xff0c;便吸引了180个回答&#xff0c;浏览量超过34万。中文期刊到底差在哪&#xff1f;面对逐渐边缘化的态势…

pyqt5 点击开始执行_《快速掌握PyQt5》第一章 PyQt5的起点

1.1 开始安装PyQt5就跟安装其他库的方法一样&#xff0c;非常简单&#xff1a;Windows上安装&#xff1a;pip install pyqt5Linux上安装&#xff1a;sudo apt-get install pyqt5-dev-toolsMacOS上安装&#xff1a;pip3 install pyqt5验证是否安装成功&#xff0c;只需要导入下该…

不用math type解决word公式上浮问题

今天来解决一下文档整理时候令人头痛的公式上浮问题。 问题 就是这种&#xff0c;以前碰见了简直就是无解&#xff0c;今天不管怎样&#xff0c;解决它&#xff01;&#xff01; 准备 开始前要检查一下公式是否是office math格式&#xff0c;如果不是&#xff0c;需要先转化成…

前沿研究丨基于驾驶脑的智能驾驶车辆硬件平台架构

本文选自中国工程院院刊《Engineering》2018年第4期作者&#xff1a;李德毅&#xff0c;高洪波来源&#xff1a;A Hardware Platform Framework for an Intelligent Vehicle Based on a Driving Brain[J].Engineering,2018,4(4):464-470.编者按智能驾驶车辆试验平台是人工智能科…

cogs2840. 二叉查找树

二叉查找树 时间限制&#xff1a;1 s 内存限制&#xff1a;512 MB 【题目描述】 二叉查找树是一种特殊的二叉树&#xff08;每个节点最多只有两个儿子的树&#xff09;。树的每个节点上存有一个唯一的值&#xff0c;并且满足&#xff1a;这个节点的左子树内所有点的值都比这个…

苹果挂端口方法_调音台变身直播声卡的方法

现在干直播的多了&#xff0c;搞音响的也可以利用自己手头的专业设备&#xff0c;把调音台变身为直播声卡&#xff0c;然后进行多通道的高品质混音直播。需要的条件&#xff1a;数字调音台或带有USB音频功能的模拟调音台苹果手机(本人没有安卓手机&#xff0c;就以苹果手机为例…

word删除所有的回车、空格

一、打开替换窗口 二、①删除回车 在查找内容中输入 ^p 在替换为中输入 ^s 或者空白 全部替换 ②删除空格 在查找内容中输入 ^w 在替换为中输入 空白 全部替换 三、总结 在Word中 ^p表示回车&#xff0c; ^s表示空白&#xff0c; ^w表示空格

xp的viostor驱动无法获取磁盘序列号的分析

深信服的viostor驱动在获取序列号的时候&#xff0c;多了一个IDE处理的代码&#xff0c;位置在1128处。它会在刚开机加载viostor.sys时机被调用&#xff0c;然后去读取注册表HKLM\\SYSTEM\CurrentControlSet\Services\viostor\Parameters的IDESNCompat&#xff0c;若为1则有此功…

十问亿级神经元类脑计算机:AI领域有望突破,哪些还需火候

来源&#xff1a;澎湃新闻近日&#xff0c;浙江大学联合之江实验室共同研制成功了中国首台基于自主知识产权类脑芯片的类脑计算机&#xff08;Darwin Mouse&#xff09;。研究团队在9月1日的成果发布会上指出&#xff0c;该类脑计算机在神经元规模上超越了德国海德堡大学的Brai…

网络加载空页面

空页面的显示很常用&#xff0c;所以自己做了一个通用的空页面显示&#xff0c;先看效果图 在有网络的时候正常加载显示&#xff0c;在没有网络的时候自动加载空页面&#xff0c;点击空页面重新加载网络请求的一个功能 1&#xff1a;定义一个xml页面&#xff0c;页面布局是一个…

excel有的单元文字可以超出单元格_excel单元格斜线

excel表格的强大功能&#xff0c;给办公带来了很多便捷&#xff0c;但是有很多强大的功能&#xff0c;其实我们都还不会用&#xff0c;如在做报表时&#xff0c;要用到给单元格加两条斜线&#xff0c;三条斜线时&#xff0c;有时就不知道怎么弄&#xff0c;两条或许会&#xff…

百度地图发布专网地图时空数据托管平台,构建智慧城市数字底盘

来源&#xff1a;百度地图“新基建”浪潮下&#xff0c;智慧城市的建设和发展进一步提速&#xff0c;作为智慧城市数字基础设施的地理信息系统&#xff0c;其数据体量也极大增长&#xff0c;对海量GIS数据集成、存储、管理、计算、表达、分析和应用等有关技术的创新发展提出了急…

word取消空格显示为点

其实就是编辑标记的隐藏与显示问题 看这里 这就是“显示/隐藏编辑标记”按钮&#xff0c;加深颜色时就会和我的文章一样有点点&#xff0c;再点击一下就好啦。

cad细等线体不显示_CAD图纸乱码、钢筋符号不显示解决办法(内含万能字体)

好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1a;点我苹果版CAD:点我 3dmax教…

长达1500年之久的争论:意识是连续的还是离散的?心理物理学家给出了新的回答...

来源&#xff1a;brainnews两种主要理论推动了由Saint Augustine发起的长达1500年之久的争论&#xff1a;意识是连续的&#xff08;即我们在每一个时间点都有意识&#xff09;&#xff0c;还是离散的&#xff08;即我们只在特定的时刻有意识&#xff09;&#xff1f; 9月3日发表…

kind富文本编辑器_在VueJs中集成UEditor 富文本编辑器

来源 | http://www.mshady.com/archives/378在vue的项目中遇到了需要使用富文本编辑器的需求&#xff0c;在github上看了很多vue封装的editor插件&#xff0c;很多对图片上传和视频上传的支持并不是很好&#xff0c;最终还是决定使用UEditor。这类的文章网上有很多&#xff0c;…

彭博社 : 中国稀土——美欧的苦恼

文章来源&#xff1a;彭博社作者&#xff1a;Joe Deaux图片、视频来源&#xff1a;网络编辑&#xff1a;江上波对于那些用于电动汽车、风力涡轮机等领域的稀有原材料&#xff0c;美国和欧洲提高产量、降低对中国依赖性的雄心壮志将面临很多障碍&#xff0c;包括更高的成本和环境…