POJ2253—Dijkstra算法的变体的应用
来源:互联网 发布:洛瑞体测数据 编辑:程序博客网 时间:2024/06/06 00:18
题目大意求青蛙由起点跳到终点的过程中,在所有的路径中的最大步伐中的最小步伐。题目简单。用Dijkstra算法解,但并非是求最小路径或最小路径长度。这里是Dijkstra算法的变体,结合贪心算法的思想,在走每一步时,选取距离最小(即步伐最小)的那一步走,每一次走都是在上一步的基础之上走的,用一个变量u记录每次通过的结点,再用一个变量记录已经走了的路径中的最大步伐,当u等于终点结点的编号时,就停止,输出最大步伐。详细见代码:
#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <cstring>using namespace std;const int maxn=202;const int inf=2000;int n;double m;bool visit[maxn];double x[maxn],y[maxn],dist[maxn],w[maxn][maxn];double length(double x1,double y1,double x2,double y2){ return sqrt(pow(x2-x1,2)+pow(y2-y1,2));}void Dijkstra(int s,int t) //起点v,终点t{ int i,j,u; double mi; for(i=0;i<n;i++) //先处理第一个结点 if(i!=s) dist[i]=w[s][i]; visit[s]=true; for(i=1;i<n;i++) { mi=inf; for(j=0;j<n;j++) //在每次走的过程中,选取距离最小的那一步走 if(!visit[j] && dist[j]<mi) { mi=dist[j]; u=j; } if(mi>m) m=mi; if(u==t) return ; visit[u]=true; for(j=0;j<n;j++) if(!visit[j] && w[u][j]<dist[j]) dist[j]=w[u][j]; }}int main(){ int i,j,cas=1; while(scanf("%d",&n) && n) { for(i=0;i<n;i++) scanf("%lf%lf",&x[i],&y[i]); for(i=0;i<n;i++) for(j=0;j<n;j++) w[i][j]=inf; for(i=0;i<n;i++) for(j=i+1;j<n;j++) { w[i][j]=length(x[i],y[i],x[j],y[j]); w[j][i]=w[i][j]; } memset(visit,0,sizeof(visit)); m=0; Dijkstra(0,1); printf("Scenario #%d\n",cas++); printf("Frog Distance = %.3lf\n",m); printf("\n"); } return 0;}
- POJ2253—Dijkstra算法的变体的应用
- 最短路径算法-Dijkstra算法的实质与变体
- poj2253---dijkstra算法妙用
- ZOJ1942 POJ2253 Frogger,Dijkstra算法
- poj2253 Frogger(用单源最短路dijkstra的思路求解)
- poj2253--dijkstra
- poj2253 Dijkstra
- 链表复制算法的变体
- poj3268--dijkstra算法的灵活应用
- 基于MATLAB的dijkstra算法及其应用
- POJ2253的Kruskal做法
- poj2253 用dijkstra计算最短路径的两个结点的最短长度
- prim算法求最小生成树的最大边--poj2253
- 单源最短路径(Dijkstra算法,贪心算法的应用)
- 栈的应用——Dijkstra双栈算法表达式求值算法
- MOSS的网站变体
- MVC的变体
- 编码的变体
- C# 中 string 的最大长度
- 黑马程序员_ JAVA学习日记—JAVA中的多线程
- 第九章 keyhookdll windows程序设计王艳平版
- Javascript validating form input using RE
- 黑马程序员——关于HashSet的思考
- POJ2253—Dijkstra算法的变体的应用
- mongodb的java驱动与spring的整合
- 2012年8月IHE测试大会Gsps总结
- windows剪贴板
- windows 批处理脚本(bat)将快捷方式加入启动菜单的方法
- 什么是Dojo?与Jquery宏观对比,结果如何?
- sql 修改列名及表名 sp_rename
- 为Android添加对WML的支持 (一)
- Repeater绑定IList<T>数据源