Java最短路径类型_JAVA 最短路径

1.从景石出发,步行游览以下景点:①游客服务中心,②阳光草坪,③森林小剧场,④儿童科普体验区,⑤儿童戏水场,⑥湿地博物馆,⑦湿地商业街。建立数学模型,找出从景石出发,到达⑦湿地商业街,并且经过①—⑥所有景点至少1次的距离最短的路线,计算该路线的长度。注:在每个景点不用停留。

任意两个景点之间的最短步行距离如表1给出。

ba3cd044b6f9de7f07265639a3ca3771.png

3f9425c70e7e1fa4d4936a1291ae40d4.png

0~7 分别表示景石、游客服务中心、阳光草坪、森林小剧场、儿童科普体验区、儿童戏水场、湿地博物馆、湿地商业街。

假定每个景点只经过一次,起点为景石,终点为湿地商业街,所以路线一共有6!=720条。

算法思想:

(1)按顺序找到一条路径leng并记录在min,min=leng。

(2)接着找下一条路径leng,这条路径leng与路径min比较。如果leng<=min,则把leng记录在min,min=leng,否则什么也不做。

(3)重复(2),直到把所有的路径都找出来,最后的min一定是最短的路径。

最短的路径为:0->3->5->1->2->4->6->7

最短路径的长度为:1820

public class LinkList {

public static void main(String[] args) {

int leng=0; //总路程

int min=10000; //最短路程,初始化为10000

//把景点之间的最短步行距离赋值到a[][]

int [][] a=new int[8][8];

a[0][0]=0 ;a[0][1]=300;a[0][2]=360;a[0][3]=210;a[0][4]=590;a[0][5]=475;a[0][6]=500;a[0][7]=690; //a[0][1]表示景石到游客服务中心的距离为300,之后的亦然

a[1][0]=300;a[1][1]=0 ;a[1][2]=380;a[1][3]=270;a[1][4]=230;a[1][5]=285;a[1][6]=200;a[1][7]=390;

a[2][0]=360;a[2][1]=380;a[2][2]=0 ;a[2][3]=510;a[2][4]=230;a[2][5]=765;a[2][6]=580;a[2][7]=770;

a[3][0]=210;a[3][1]=270;a[3][2]=510;a[3][3]=0 ;a[3][4]=470;a[3][5]=265;a[3][6]=450;a[3][7]=640;

a[4][0]=590;a[4][1]=230;a[4][2]=230;a[4][3]=470;a[4][4]=0 ;a[4][5]=515;a[4][6]=260;a[4][7]=450;

a[5][0]=475;a[5][1]=285;a[5][2]=765;a[5][3]=265;a[5][4]=515;a[5][5]=0 ;a[5][6]=460;a[5][7]=650;

a[6][0]=500;a[6][1]=200;a[6][2]=580;a[6][3]=450;a[6][4]=260;a[6][5]=460;a[6][6]=0 ;a[6][7]=190;

a[7][0]=690;a[7][1]=390;a[7][2]=760;a[7][3]=640;a[7][4]=450;a[7][5]=650;a[7][6]=190;a[7][7]=0 ;

int i1=0; //起点为景石

int i8=7; //终点为湿地商业街

int [] b=new int[8]; //记录景点,1为未游览,0为已游览

b[0]=0; //起点终点都已确定,所以先置为0

b[7]=0;

for(int i=1;i<7;i++)

b[i]=1;

int [] c=new int[8]; //用来记录路径

for(int i2=1;i2<7;i2++)

{

if(b[i2]==0) //如果已走过,就不能再走了

continue; //

b[i2]=0;

leng=leng+a[i1][i2]; //把走过的路的路程加起来

for(int i3=1;i3<7;i3++)

{

if(b[i3]==0)

continue;

b[i3]=0;

leng=leng+a[i2][i3];

for(int i4=1;i4<7;i4++)

{

if(b[i4]==0)

continue;

b[i4]=0;

leng=leng+a[i3][i4];

for(int i5=1;i5<7;i5++)

{

if(b[i5]==0)

continue;

b[i5]=0;

leng=leng+a[i4][i5];

for(int i6=1;i6<7;i6++)

{

if(b[i6]==0)

continue;

b[i6]=0;

leng=leng+a[i5][i6];

for(int i7=1;i7<7;i7++)

{

if(b[i7]==0)

continue;

b[i7]=0;

leng=leng+a[i6][i7];

leng=leng+a[i7][i8];

if(leng<=min) //如果存在更短的路径,就把更短的那条路径记录下来

{

min=leng;

c[0]=i1;c[1]=i2;c[2]=i3;c[3]=i4;c[4]=i5;c[5]=i6;c[6]=i7;c[7]=i8;

}

leng=leng-a[i6][i7];

leng=leng-a[i7][i8];

b[i7]=1;

}

leng=leng-a[i5][i6];

b[i6]=1;

}

leng=leng-a[i4][i5];

b[i5]=1;

}

leng=leng-a[i3][i4];

b[i4]=1;

}

leng=leng-a[i2][i3];

b[i3]=1;

}

leng=leng-a[i1][i2];

b[i2]=1;

}

System.out.println("最短路径为:"); //输出记录的最短路径的结果

System.out.print(c[0]);

for(int i=1;i<8;i++)

System.out.print("->"+c[i]);

System.out.print("\n");

System.out.println("最短路径长度为:"+min);

}

}

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

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

相关文章

php 开启,PHP服务的开启详细步骤

安装完php,使用chkconfig命令来查看php-fpm服务是否开启&#xff0c;如果没有开启1. 在/etc/init.d/目录下创建脚本php-fpmvim/etc/init.d/php-fpm2. 编写脚本内容(将一下复制进去相应改动安装路径)#!/bin/sh## php-fpm - this script starts and stops the php-fpm daemin## c…

linux下安装mysql5.7.19,Linux下MySQL5.1升级到高版本MySQL5.7.19详解 | zifangsky的个人博客...

一 数据备份(1)查看当前版本&#xff1a;Shell[rootcentos ~]# mysql -V1[rootcentos~]# mysql -V(2)备份数据&#xff1a;Shell[rootcentos ~]# mysqldump -u root -h 127.0.0.1 -P 3306 -p --all-databases > databases.sql1[rootcentos~]# mysqldump -u root -h 127.0.0.…

mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子

想在每天某个特定时间段定时执行一条sql语句命令&#xff0c;来进行数据库的备份或者更新删除等&#xff0c;可以直接使用MySQL自带的定时任务Event事件来执行操作。需要注意的是Event事件是在MySQL 5.1版本中新增的&#xff0c;还有一点就是确保你有MySQL数据库的root管理权限…

MATLAB设置x为0到10所有数,MATLAB教学_10数值微积分

本文学习视频地址&#xff1a;https://www.bilibili.com/video/av68228488?p10课堂PPT以及本人学习代码已上传。本文学习内容&#xff1a;多项式的微分和积分数值的微分和积分目录多项式的表示方法polyval()polyder()16分钟练习conv()polyint()Numerical Differentiation39分钟…

php header 404 nginx,ThinkPHP在nginx下怎么设置?路由统统404,疯了~

本地用MAMP跑的代码&#xff0c;运行没问题。但是部署到CENTOS 6.8 NGINX服务器上的时候&#xff0c;路由地址都404了&#xff01;[可以访问] http://something.com/API/public/index.php[404] http://something.com/API/public/index.php/consult_add折腾一晚上了。。简直了&a…

php strchr 截断,PHP strchr() 函数

w3school 教程PHP String 函数查找 "world" 在 "Hello world!" 中的第一次超并返回此字符串的其余个别&#xff1a;echo strchr("Hello world!","world");?>运行实例strchr() 函数搜他串在另一字符串中的第一次常该函数是 strstr(…

matlab aic sic,sic是什么意思_sic的翻译_音标_读音_用法_例句_爱词霸在线词典

全部In the mud -- En ange e il mondo ! [ sic ] ( 6 )污泥里 —— Efangoeilmondo! ( 六 )汉英文学 - 围城Fixed - seal & rotational - seal are made of various msterials, SIC, Carbon, Ceramic and can withstand various chemicals.固定环 及 转动环由各种不同材质…

win7卸载oracle12c,Windows7上完全卸载Oracle 12c操作步骤

Windows7上完全卸载Oracle 12c操作步骤1.关闭Oracle所有的服务,按【winR】运行【services.msc】找到所有Oracle开头的服务(OracleVssWriterORCLOracleServiceORCLOracleOraDB12Home1TNSListenerOracleOraDB12Home1MTSRecoveryServiceOracleJobSchedulerORCL),点击停止。2.使用O…

linux怎样扩容目录,Linux系统下对目录扩容的方法介绍

1、现象&#xff1a;日志服务器当初考虑不周&#xff0c;分区划分不太合理&#xff1a;2、目标&#xff1a;将/home磁盘空间缩减 并将新的磁盘分区扩充到/根目录卸载/home分区并压缩分区卸载/home时 提示目标忙&#xff0c;fuser -m /home查看谁用/home时提示没有fuser命令[ro…

linux多线程九宫格,项目实战:Qt九宫格图片资源浏览器(支持window、linux、兼容各国产系统,支持子文件夹,多选,全选,图片预览,行数与列数设置等)...

需求做嵌入式设备&#xff0c;需求九宫格图片资源浏览器&#xff1a;1.设置根目录&#xff1b;2.可拖动&#xff1b;3.可设置列数与行数&#xff1b;4.点击文件夹可以进入文件夹&#xff1b;5.点击图片可以浏览图片&#xff1b;6.支持触摸屏上下拽拖浏览&#xff1b;7.支持长安…

window连接树莓派linux桌面,远程连接Raspberry Pi(树莓派)图形用户界面(X Window)

背景&#xff1a;有的时候&#xff0c;我们希望能远程连接一台linux的图形界面用来管理机器,这里需要用到tightvncserver和xtightvncviewer两个工具我的树莓派的ip是10.141.247.134 另一台机器为作client去链接树莓派的ip为10.141.247.121. 先在树莓派的机器上安装tightvncs…

linux小红帽系统能用微信,小红帽腾讯QQ微信登录版-小红帽腾讯版v1.0.3 安卓版-腾牛安卓网...

小红帽腾讯版是一款专为广大喜爱玩童话类手游的玩家打造的欧美风游戏&#xff0c;这款游戏有着最为精致的游戏画面&#xff0c;黑色风格的童话故事&#xff0c;带领玩家领略不一样的童年世界&#xff0c;给您带来最佳的游戏体验&#xff01;小红帽腾讯版简介《小红帽》是一款改…

计算机二级c语言2021年重点内容,2021年5月计算机二级C语言试题(总)

一个考生的快乐&#xff0c;不是因为他备考的时间多&#xff0c;而是因为他的选择对。选择考无忧题库&#xff0c;做二级C语言试题&#xff0c;助你备考轻松&#xff01;二级C语言试题【1】1.若有以下数组说明&#xff0c;则i10;a[a[i]]元素数值是(C)。int a[12]{1,4,7,10,2,5,…

android 图片合成pdf文件,教你怎么把多张图片合成一个pdf文件

当你遇到需要把多张图片合并成一个pdf文件时&#xff0c;你需要怎么做?可能有些朋友会说下载一个pdf格式转换工具&#xff0c;其实不必这么麻烦&#xff0c;你只要把文件上传到在线迅捷pdf转换器&#xff0c;就可以一站式帮你搞定pdf文件的格式转换以及一些常用的功能操作(如p…

华为系统鸿蒙优势,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上&#xff0c;华为消费业务CEO 余承东&#xff0c;正式发布鸿蒙OS2.0&#xff0c;并宣布华为鸿蒙OS将全面启用全场景生态&#xff0c;并将于2020年12月发布手机版。余承东还表示&#xff0c;明年&#xff0c;华为的智能手机将全面升级&#xff0c;以支持鸿蒙操…

网页自动关机代码HTML,win10系统打开邮件显示网页html源代码如何解决

有不少win10系统用户在打开邮件的时候&#xff0c;发现内容全是显示网页的html源代码&#xff0c;无法看到内容&#xff0c;遇到这样的问题该怎么办呢&#xff0c;通常是自带的"邮件和日历"应用暂时不支持查看HTML格式的邮件&#xff0c;下面给大家分享一下具体的解决…

retrofit 2.0 android 教程,初识Retrofit2.0

Retrofit无疑是当下最流行的Android网络请求框架了&#xff0c;是Square提供的开源产品。官方网站是这样介绍Retrofit的—-A type-safe HTTP client for Android and Java&#xff0c;为Android平台的应用提供一个类型安全的HTTP客户端。Retrofit 是一套注解形式的网络请求封装…

小学生学计算机编程的必要,小学生学编程,真的那么重要吗

原标题&#xff1a;小学生学编程&#xff0c;真的那么重要吗编程简单的说就是告诉计算机要做什么。人类需要将解决问题的思路、方法和手段通过计算机能够理解的形式告诉计算机&#xff0c;使得计算机能够根据人的指令一步一步去工作&#xff0c;完成某种特定的任务。计算机是迄…

家用计算机机箱怎么选,DIY装机怎么选择电脑机箱 新手必读的电脑主机箱选购指南...

在这个讲究颜值的时代&#xff0c;对于一些主要外观的外观党来说&#xff0c;内外皆修的机箱也是算重要的。DIY装机怎么选择电脑机箱&#xff1f;下面装机之家小编就来谈下新手必读的电脑主机箱选购指南&#xff0c;对于装机选择机箱困难症的朋友不妨来看看。一、首先要明白自己…

计算机启动应用程序的方法,excel的程序_Excel2010中启动应用程序的三种方法

使用Excel时&#xff0c;需要先启动应用程序&#xff0c;怎么去进行操作启动它?今天&#xff0c;学习啦小编就教大家在Excel2010中启动应用程序的三种方法。Excel2010中启动应用程序的三种步骤如下&#xff1a;1.开始菜单在桌面上&#xff0c;单击“开始”&#xff0c;“所有程…