摘要:
KMP算法一、传统字符串匹配算法/* * 从s中第sIndex位置开始匹配p * 若匹配成功,返回s中模式串p的起始index * 若匹配失败,返回-1 */int index(const std::string &s, const std::string &p, const int sIndex... 阅读全文
摘要:
快速排序算法思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的 元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正... 阅读全文
摘要:
阶乘和因子要求:输入正整数n(1#include using namespace std;int prime[100], cnt;bool isPrime(int n) //判断素数,n不能太大{ if(n > N) { if(N 100) break; m... 阅读全文
摘要:
Dijkstra算法一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。 假设P(i,j)={Vi....Vk..Vs...V... 阅读全文
摘要:
匈牙利算法二分图:把一个图的顶点划分为两个不相交集 U和V,使得每一条边都分别连接U、V中的顶点。如果存在这样的划分,则此图为一个二分图。匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。例如,图 3、图 4 中红色的边就是图 2 的匹配。匹配点、匹配边、... 阅读全文
摘要:
邮票组合问题有四种面值的邮票很多枚,面值分别为1,4,12,21,取五张,求取出这些邮票的最大连续组合值代码:#include #include #define N 5#define M 5int k, Found, Flag[N];int Stamp[M] = {0, 1, 4, 12, 21};... 阅读全文
摘要:
字母重排 输入一个字典(用***结尾),然后再输入若干单词。没输入一个单词w,都需要在字典中找出所有可以用w的字幕重排后得到的单词,并按照字典序从小到大的顺序在一行中输出,如果不存在,输出“:(”。单词间用空格隔开,且所有输入单词都由不超过6个小写字母组成。样例输入:tarp given scor... 阅读全文
摘要:
6174问题假设一个各位数字不相同的四位数,把所有数字从大到小排序后得到a, 从小到大排序后得到b,然后用a-b替换原来这个数,继续操作。例如,从1234出发,依次有4321-1234=3078,8730-378=8352,8532-2358=6174,7641-1467=6174,回到了自己。输入... 阅读全文
摘要:
例子"abmadsefadd" 最长长度为7"avoaid" 最长长度为3思路空间换时间hashTable,起始位置设为beg。初始化全局最大值0。开辟字符数组,起初标为0。访问数组时如果该字符在hashTable对应的哈希值为1,则计算当前位置到beg的距离,并且把beg赋值为beg+1... 阅读全文
摘要:
定义结点struct MGraph{ int vexs[MAXVEX]; //顶点数组 int arc[MAXVEX][MAXVEX]; //邻接矩阵 int numVertex, numEdges; //定点数 边数};深度优先遍历图示 参考代码bool vis... 阅读全文