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,一经查实,立即删除!

相关文章

java 外螺旋矩阵_螺旋矩阵的java实现

今天参加了腾讯实习生的在线笔试&#xff0c;螺旋矩阵的问题&#xff0c;算是ACM的入门题吧想到了有两种实现递归和非递归输入&#xff1a;3输出&#xff1a;1 2 3 8 9 4 7 6 5输入&#xff1a;5输出&#xff1a;1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 8…

1445.32php,nginx实现mysql的负载均衡

1.下载module模块$ tar -xzvf nginx-1.2.1.tar.gz$ cd nginx-1.2.1/$ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch /path是指nginx_tcp_proxy_module路径$ ./configure --add-module/usr/local/ngx_cache_purge-1.4--prefix/usr/local/nginx --with-http_stub…

php date 有warning,php提示PHP Warning: date(): It is not safe to rely on the......错误的解决办法...

在写php程序中有时会出现这样的警告&#xff1a;PHP Warning: date(): It is not safe to rely on the systems timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those method…

php不用于输出的函数,PHP常用函数和常见疑难问题解答

首先介绍下比较简单但必不可少且实用的知识&#xff0c;可以当手册查询&#xff0c;适合像我一样的新手看。PHP常用库函数介绍一、PHP字符串操作常用函数1.确定字符串长度int strlen(string str)2.比较两个字符串a. strcmp函数对两个字符串进行二进制安全的比较&#xff0c;并区…

php指定字符编码,PHP字符编码问题

绝对一劳永逸,确保您再也不会遇到编码问题&#xff1a;在任何地方使用UTF-8&#xff01;那是(如果你使用mysql和php)&#xff1a;>例如,将数据库中的所有表格设置为整理“utf8_general_ci”.>建立数据库连接后,运行以下SQL查询&#xff1a;“SET NAMES’utf8’”>始终…

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…

php ssh 管理服务器,php 利用ssh执行远程或本地liunx服务器命令

/*** 利用ssh执行 远程或本地liunx服务器命令* 虽然可以用 shee_exec来执行本地机命令 但却无法选择用哪个用户来执行 此函数可解决此类问题* $host ssh 主机名 可以为ip 或 域名* $port ssh 端口* $ssh_username ssh 登录用户名* $ssh_password ssh 登录密码* $command 要执行…

php四种标量,php的标量数据类型和复合数据类型,php四种标量

php的标量数据类型和复合数据类型PHP的标量数据类型和复合数据类型&#xff0c;标量数据类型数值类型整型$ a20浮点型(小数)$ a1.2布尔类型$ atrueecho $ a//输出1 $ bfalseecho $ b//输出0字符串类型//单引号$ str’ Hello world//双引号$ str’ Hello World//转义符\ ‘ $ st…

用java创建一个单例模式,采用Java实现单例模式

一. 背景单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xff0c;让所有需要调用的地方都共享这一单例对象。- 引…

ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患。分享给大家供大家参考&#xff0c;具体如下&#xff1a;php CI框架中URL特殊字符有很多是不支持的&#xff0c;导致像c&#xff0c;括号这些常用的分类&#xff0c;字符都无法正常显示很头痛&#xff0c;而在…

es6判断对象key是否存在,ES6中获取对象的key

ES6中获取对象的keyconst json {‘a‘: 123, ‘b‘: 321};Object.keys(json).forEach(key > {window.console.log(key);}); // [a,b]ES6一共有五种方法可以遍历对象的属性。for ... in&#xff1a;循环遍历对象自身的和继承的可枚举的属性(不包含Symbol属性)Object.keys(ob…

招投标体统JAVA源代码,JSP 招投标管理系统(毕业设计)源码

一、源码特点JSP 招投标管理系统 是一套完善的毕业设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。二、功能介绍主要功能&#xff1a;(1)权限管理&#xff1a;对权限信息进行添加、删除、…

java+timer+退出,java timer 兑现在指定时间执行方法

java timer 实现在指定时间执行方法最近在弄一个定时发送的项目&#xff0c;需要定时执行方法&#xff0c;于是用到了Timer&#xff0c;但是我想要的功能网络上的资源比较少&#xff0c;所以自己研究了一下。下面是我写的一些代码import java.util.Calendar;import java.util.D…

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管理权限…

php如何配置微信公众号环境,微信公众平台开发之配置与请求

一、配置参数define(WEIXIN_APPID, wxzzzzzzzz);define(WEIXIN_APPSECRET, ouewjdsaudsamkh);define(WEIXIN_TOKEN, 9973833232232);define(WEIXIN_NOTIFY_URL, http://xx.com/xx/xx);define(WEIXIN_MCHID, 322221121);define(WEIXIN_KEY, xddsdswewew);1)微信公众号开发中IDWE…

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…

vue怎么使用php调取数据,vue 数据操作

pushpopshiftunshiftsplicesortreverse{{ item.message }} #var example new Vue({el: #example,data: {items: [{message: Foo },{message: Bar },{message: Baz }],addValue:{message:match}},methods:{push(){//接收任意数量的参数&#xff0c;把它们逐个添加到数组末尾&am…