算法总结
文章平均质量分 51
和道一文字JC
这个作者很懒,什么都没留下…
展开
-
字符串的hash算法
将一个字符串映射到一个hash值可以用来查看某一个字符串是否出现过,非常的方便快捷,在各种不同的字符串的hash算法中性能最好的通常比较简洁。下面给出一个BKDR算法:unsigned int BKDRHash(char *str) { unsigned int seed = 131; // 31 131 1313 13131 131313 etc.. unsign原创 2013-08-31 14:37:23 · 766 阅读 · 0 评论 -
动态规划算法总结
动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等背包动规:01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题,挤牛奶等原创 2013-09-08 16:35:49 · 1190 阅读 · 0 评论 -
博弈论 负极大值算法
下面这篇文章承接上文,人工智能,博弈论一个局面对红方的优势为X,那么对于黑方的优势就是-X;一个局面对红方的优势为-X,对黑方的优势就是X。在负极大值搜索算法中,没有了极小点,只有极大点。需要注意的是,局面对一方的优势转化为另一方的优势时需要加负号。局面估计区间是一个关于0点对称的区间:[-MaxValue,MaxValue].需要注意的是,为了能使负极大值搜索算法得到正确的评价,原创 2013-10-04 19:44:32 · 4259 阅读 · 0 评论 -
博弈树
探讨一下难度较大的棋类游戏程序,比如国际象棋和西洋跳棋等等。用这些程序来同人或其他程序对弈。然而,有些程序是把计算机精心设计成一个棋盘,人们可以在其上对弈(或者是一种单人玩的棋盘游戏)。这种程序更接近于系统模拟的领域,而不属于人工智能的范畴。我们此处所要介绍的却是让计算机能够“思考”如何下棋。假定有两个人或者两台机器在下棋。我们把其中一名称为棋手,另一名称为对手。而我们始终从棋手的角度来观转载 2013-10-04 19:36:48 · 5104 阅读 · 0 评论 -
BellmanFord 算法
第一个是创建一个图的代码,第二个是BellmanFord算法void ConstructGraph(Graph *G , char FilePath[]){ FILE *f; f=fopen(FilePath,"r"); char line[256]; int num=0,weight=0,k=0,count=0,minus=0; fgets(line,256,f); coun原创 2013-09-13 15:33:24 · 862 阅读 · 0 评论 -
计算字符串的后缀数组算法
2倍增算法int wa[1000],wb[1000],wv[1000],ws[1000];int cmp(int *r , int a , int b , int l){ return r[a]==r[b] && r[a+l]==r[b+l];}void d(int *r , int *sa , int n , int m){ int i,j,p,*x=wa,*y=w原创 2013-08-31 21:42:54 · 705 阅读 · 0 评论 -
常见排序算法代码
最常见的算法如下:选择排序,插入排序,冒泡排序,快排相应的代码如下void select_sort(int array[], int n) { for(int i=0 ; i<n ; i++){ int min=i; for(int j=i ; j<n ; j++){ if(array[j]<array[min])原创 2013-08-31 16:19:28 · 703 阅读 · 0 评论 -
常见的字符串的题目
1、查询字符串S是否包含子串S12、找出字符串S的最长重复子串S13、找出字符串S1同S2的最长公共子串4、找出字符串S1同S2的最长公共子序列5、找出字符串S的最长回文子串S16、多模式串的模式匹配问题原创 2013-09-01 21:08:58 · 721 阅读 · 0 评论 -
字符串匹配算法
在做字符串之类的题目的时候,字符串匹配算法是经常需要的。下面给出经典的KMP算法:void compute_prefix(string pattern, int *prefix){ int len=pattern.size(); prefix[0]=-1; int k=-1; for(int q=1 ; q<len ; q++){ while(k原创 2013-08-31 14:56:47 · 936 阅读 · 0 评论 -
跟栈有关的面试题
1、常数时间求栈的最大值一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。2、常数时间空间求栈的最大值一个整数栈stack,具有push和pop操作,其时间空间复杂度皆原创 2013-09-07 10:09:50 · 738 阅读 · 0 评论