博客
关于我
POJ2253-Frogger
阅读量:794 次
发布时间:2023-03-03

本文共 1096 字,大约阅读时间需要 3 分钟。

题目大意:给出两只青蛙A、B的坐标和其他n-2个坐标,任意两个坐标点间都是双向连通的。显然从A到B存在至少一条通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。

提示:唉。。不说了,又是Floyd...注意精度就是了

题目要求:用Floyd算法求出两两最短路,再求出从每个点开始的最长路,最后从这n个最长路中求出最小的那个即为所求。

Floyd算法的应用:在实际编程中,如何将这个抽象的算法转化为具体的代码?比如说,我们需要建立一个二维数组来存储各点之间的最短距离。然后通过三步松弛的方式,逐步更新各点之间的最短距离。最后,在求得所有最短距离后,我们需要再对每个点进行一次遍历,找出从该点出发的最长路径。将所有点的最长路径值进行比较,最小的那个即为最小跳远距离。

代码实现://Memory Time 2 //584K 63MS#include

#include <math.h>#include
using namespace std;

class coordinate{public:double x,y;};point[201];double path[201][201];

int main(void){int i,j,k;int cases=1;while(cases){int n;cin >> n;if(!n)break;for(i=1;i<=n;i++)cin >> point[i].x >> point[i].y;for(i=1;i<=n-1;i++)for(j=i+1;j<=n;j++){double x2=point[i].x-point[j].x;double y2=point[i].y-point[j].y;path[i][j]=path[j][i]=sqrt(x2x2+y2y2);}for(k=1;k<=n;k++)for(i=1;i<=n-1;i++)for(j=i+1;j<=n;j++)if(path[i][k] < path[i][j] && path[k][j] < path[i][j])path[i][j]=path[k][j];elsepath[i][j]=path[i][k];cout << "Scenario #"<< cases++;cases++;}}

转载于:https://www.cnblogs.com/lyy289065406/archive/2011/07/30/2121682.html

你可能感兴趣的文章
PHP获取IP所在地区(转)
查看>>
PHP获取IP的方法对比
查看>>
php获取json里面内容
查看>>
R2的版本由来
查看>>
PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
查看>>
PHP获取当前时间、时间戳的各种格式写法汇总
查看>>
PHP获取当前页面的完整URL
查看>>
php获取文件夹中文件的两种方法
查看>>
PHP获取日期的一些方法总结
查看>>
R2学习记录
查看>>
php解析ipa包,获取logo
查看>>
php设计模式 萨莱 pdf,PHP设计模式 建造者模式
查看>>
php设计模式之装饰器模式
查看>>
R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)
查看>>
PHP设计模式:观察者模式
查看>>
php详细学习1
查看>>
php语言优劣
查看>>
PHP语言最优雅的支付SDK扩展包
查看>>
PHP请求https域名发生segment fault段错误
查看>>
PHP读写XML文件
查看>>