
算法
hackerain
这个作者很懒,什么都没留下…
展开
-
求最短路径(dijkstra)
<br />因为要做一道题牵扯到最小路径的算法,所以就看了看缔结斯特拉算法。<br />看了算法导论上面的介绍不明白,只好下了一个代码自己去看。<br />//单源图最短路径求法<br />int dijkstra(int from,int to ,int map[][N])<br />{<br /> int *dis=new int[n];//源到n的距离<br /> int *used=new int[n];//n点是否用过<br /> int i,j,u,max=999999;<br /> int m转载 2010-07-22 00:40:00 · 981 阅读 · 0 评论 -
理发感触——编程之美——艺术品
在图书馆借了本书,叫《编程之美》。略微看了一下它之后,感触良深。这让我想起了曾经在高中的时候理发的经历。那一次,我和一个同学一起去理发,进去之后,两个理发师就开始给我们理发,我们几乎是同时开始的,然后当我还在看我的理发师在那里东剪剪西修修时,我那个同学就已经理好了。我甚是惊诧,怎么这么快?几乎只有5分钟就搞定了。而我那个理发师,依然在那里不紧不慢,全神贯注在我的头发上,坐在他的那个可移动的凳子上,一会滑到我的左边,一会滑到我的右边,此刻我关注了他的剪发的手法,虽然我不懂剪发,但可以看的出来,他动原创 2011-03-12 21:16:00 · 1510 阅读 · 0 评论 -
编译原理之逆波兰表达式
逆波兰表达式就是所谓的后缀表达式,运算符号都在运算变量的后面,这样计算机进行计算的时候是非常方便和快捷的。将中缀表达式转换成后缀表达式的算法如下图所示:根据上图可以直接出来代码,另外转换为后缀表达式之后,对逆波兰表达式的计算就会很方便了,看下图:需要注意的是,重点不在写程序,重点在于这些个图是怎么出来的,这些也都是前人的总结啊,示例代码如下:#inc原创 2012-06-21 14:25:11 · 8719 阅读 · 0 评论 -
位图排序算法(一),java版
还是很久以前看的《编程珠玑》,开篇就是这个在特殊条件下的排序问题,当时只是粗略的看了一下,并没有真正的理解,现在又翻出了这本书,还是遇到开篇这个问题,但是这次也不知道怎么回事,一下子就理解了,细想一下,这个排序方法不难,甚至挺简单。难就难在程序上了,因为要操作到“位”这个单位上,原创 2011-09-18 18:19:38 · 3217 阅读 · 0 评论 -
有向图的深度优先遍历,以及对边的分类的判断
在AdjacencyList.h中:#ifndef AdjacencyList_H#define AdjacencyList_H#include "stdio.h"#include "stdlib.h"#define WHITE 0#define原创 2011-07-03 21:34:37 · 5688 阅读 · 0 评论 -
递归的一些基础知识
<br />递归思想真的很好,但是递归的思想不是那么容易就想起来的,要找到问题的规律,若能够把这个问题化为和该问题类似的但是规模要小一些的问题,那就可以用递归的思想!当意识到要这个问题可以用递归来解决时,怎么来写出程序,又是一个挑战!通常遇到这种情况,个人认为讨论一般的情况,要比举特例要好很多。 <br /><br /> 递归通常把一个大型复杂的问题层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用原创 2011-05-05 00:03:00 · 1116 阅读 · 0 评论 -
李开复老师的《算法的力量》——解开了我的疑惑
<br />算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门,就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实,大家被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上,有位同学生动地把这些基础课转载 2011-05-03 23:44:00 · 1542 阅读 · 1 评论 -
字符串的一些问题———关键是KMP算法
/*动态顺序串*/#include using namespace std;/*动态顺序串的定义*/typedef struct DString{ char *ch; int length;}DString;/*初始化动态串*/void initString(DString &S){ S.ch=new char[100]; S.length原创 2011-06-23 16:20:00 · 1091 阅读 · 0 评论 -
用辗转相除法求两个数的最大公约数
<br /> 早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法--辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, x%y)(y > 0),如此便可把原问题转化为求两个更小数的最原创 2011-04-16 21:56:00 · 1984 阅读 · 0 评论 -
Graham算法——凸包问题
Graham算法的思路,大概如下:对平面上的点的集合,从中找到有最小的y坐标值的点p,然后根据其它点和p的连线与正x轴所成的角度将平面上的点进行排序,排序后,扫描从p开始的有序列表,如果所有的这些点都在凸包上,那么每三个相继的点,会组成一个左旋,从另一方面说,如果相继的三个点,p1,p2,p3,组成了一个右旋,则可以立即去除p2,因为它不可能在凸包上!如此扫描到p3等于p时,扫描就结束,剩下的点,就全都是凸包上的点了!下面是用c++写的具体代码:#include #include using nam原创 2011-05-26 21:14:00 · 1350 阅读 · 0 评论 -
acm常用算法
<br /><br />在网上看到的,准备按着这个一项一项练习~~<br />第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,<br />因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打<br />出来. <br />1.最短路(Floyd、Dijstra,BellmanFord) <br />2.最小生成树(先写个prim,kruscal要用并查集,不好写) <br />3.大数(高精度)加减乘除 <br />4.二分查找. (代码可在五行转载 2010-07-22 01:10:00 · 1389 阅读 · 0 评论 -
最短路径Floyd算法分析 收藏 Floyd最短路径算法
<br /> 最短路径Floyd算法分析 收藏<br />Floyd最短路径算法<br /> 在图论中经常会遇到这样的问题,在一个有向图里,求出任意两个节点之间的最短距离。我们在离散数学、数据结构课上都遇到过这个问题,在计算机网络里介绍网络层的时候好像也遇到过这个问题,记不请了... 但是书本上一律采取的是Dijkstra算法,通过Dijkstra算法可以求出单源最短路径,然后逐个节点利用Dijkstra算法就可以了。不过在这里想换换口味,采取Robert Floyd提出的算法来解决这个问题。下面转载 2010-07-22 01:07:00 · 1397 阅读 · 0 评论 -
让CPU占用率听你指挥
<br />呵呵呵,看到CPU占用率显示出的锯齿状的正弦曲线,感觉是有点神奇啊,这是那本书上的代码,收藏:<br />#include <windows.h>#include <math.h>const double SPLIT=0.01;const int COUNT=200;const double PI=3.14159265;const int INTERVAL=300;int main(){ DWORD busySpan[200]; DWORD idleSpan[原创 2011-03-13 16:04:00 · 1107 阅读 · 0 评论