void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年4月18日

摘要: 给出几个坐标,要求从第一个坐标到第二个坐标的路径中最大跳跃距离的最小值求单源最短路径问题,首先想到用dj算法,不过稍有不同找到一个点后,更新其他点时候需要dis2[j][1]=MIN(dis2[j][1],MAX(dis2[temp][1],dis2[j][temp]));也就是如果j 通过temp到达1这个点时候距离比直接到1短,就有可能产生新的值,更新掉... 1 #include <stdio.h> 2 #include <memory.h> 3 #include <math.h> 4 #define MAX( x, y ) ( ((x) > ( 阅读全文
posted @ 2011-04-18 23:51 void-man 阅读(328) 评论(0) 推荐(0)

摘要: 扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(p, q) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现: int exGcd(int a, int b, int &x, int &y) { if(b == 0) { x = 1; y = 0; return a; } int r = exGcd(b, a % b, x, y); int t = x; x = y; y = t - a / b * y; return r; } 把这个实现和Gcd的递归实现相比,发现多了下面的 阅读全文
posted @ 2011-04-18 23:23 void-man 阅读(6130) 评论(0) 推荐(3)

摘要: 给出几个点的坐标,然后期中有几个点可以用手机通信,手机不论距离,剩余的用电话通信,问你最少需要用线的情况下最大的线路长度是多少其实就是求出最小生成树以后,把最大的那几个点去掉用手机来通信,剩余的最大那个就是所有的prim的基本应用 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <algorithm> 5 using namespace std; 6 struct point 7 { 8 double x; 9 double y;10 }alld[ 阅读全文
posted @ 2011-04-18 00:14 void-man 阅读(259) 评论(0) 推荐(0)