C/C++算法
文章平均质量分 70
标哥-iOS攻城狮
现从事iOS开发,业余研究HTML5+CSS3+PHP+Mysql,cocos2dx中...
展开
-
KMP算法
刚看到位兄弟也贴了份KMP算法说明,但本人觉得说的不是很详细,当初我在看这个算法的时候也看的头晕昏昏的,我贴的这份也是网上找的。且听详细分解:KMP字符串模式匹配详解来自CSDN A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。转载 2012-04-28 22:45:14 · 633 阅读 · 0 评论 -
C语言实现的全排列算法
#include /************************************************************************//* 功能:实现两个整形参数值交换/* 参数:/* lhs--int类型的指针,指向待交换数1的地址/* rhs--int类型的指针,指向待交换数2的地址/********************原创 2013-05-30 08:41:39 · 14056 阅读 · 0 评论 -
最长连续公共子串算法
#include /************************************************************************ 功能: 获取两个字符串的最长公共子串 描述: 时间复杂度跟两个字符串的长度有关,分别设为L1,L2,则时间复杂度为O(L1*L2) 参数: lhs--字符串1 rhs--字符串2 返回值:原创 2013-05-30 14:26:49 · 1102 阅读 · 0 评论 -
最长连续公共子串算法
#include #include using namespace std;int GetLCSLength(char* str1, char* str2){ int length1 = strlen(str1); int length2 = strlen(str2); int maxCommonLen = 0; // 公共子串的长度 int endIndex = 0;原创 2013-05-30 15:20:02 · 784 阅读 · 0 评论 -
任意进制转换算法
#include /************************************************************************//* 功能:实现任意进制之间的转换/* 参数:pSrc--指向源进制数,字符数组存放/* pDst--指向转换完成后的进制数,以字符数组形式存放/* src --源进制数的进制类型,如十进制数的sr原创 2013-05-31 08:19:57 · 3194 阅读 · 1 评论 -
素数最短距离算法
#include #include #include using namespace std;#define MAX_LENGTH 50000001bool prime[MAX_LENGTH];void CreatePrimeTable(){ int i, j; memset(prime, true, sizeof(prime)); // 初始化全为1 prime[0]原创 2013-05-31 09:18:50 · 1076 阅读 · 0 评论 -
最小生成树算法
#include #include #define INFINITY 1000000 // 无穷大#define MAX_VERTEX_COUNT 6 // 图最多顶点数// 图的邻接矩阵typedef int Graph[MAX_VERTEX_COUNT][MAX_VERTEX_COUNT];/***************************************原创 2013-05-31 19:33:33 · 785 阅读 · 0 评论 -
qsort实现排序算法
#include #include #define MAX_SQUARE_COUNT 10typedef struct tagSquare{ int no; //编号 int length; //长 int width; //宽}Square;// 1.按照编号从小到大排序// 2.对于编号相等的长方形,按照长方形的长排序;// 3.如果编号和长都相同,按照长原创 2013-05-31 20:04:20 · 891 阅读 · 0 评论 -
常用的各种排序算法
//常用的排序算法#include using namespace std;typedef int ElemType;/*1、插入排序(1)直接插入排序算法算法思想:将等排序列划分为有序与无序两部分,然后再依次将无序部分插入到已经有序的部分,最后就可以形成有序序列。操作步骤如下:1)查找出元素L(i)在表中的插入位置K;2)将表中的第K个元素之前的元素依次后移一个位置;原创 2013-09-19 09:55:44 · 1192 阅读 · 0 评论 -
求二叉树第m层上的第K个结点的值
/*2.给定以下二叉树:struct node_t{node_t *left, *right;int value;};要求编写函数 node_t* foo(node_t *node, unsigned int m, unsigned int k);输出以 node 为根的二叉树第 m 层的第 k 个节点值.(level, k 均从 0 开始计数)注意:.此树原创 2013-09-20 15:23:14 · 1980 阅读 · 0 评论 -
大数减法算法
#include #include #include // 功能:实现两个大数减法运算// 参数:source1--被减数// source2--减数// result --计算结果// 返回值:计算结果为正数,返回'+',否则返回'-'char Minus(char *source1, char *source2, char *result){ in原创 2013-05-29 22:35:24 · 4026 阅读 · 1 评论 -
字符串查找和替换算法
#include #include /************************************************************************//* 功能:实现字符串的查找和替换,所有被替换串出现的地方都用替换串替换/* 参数:pSrc--指向源字符串/* pDst--指向替换完成后的字符串,并作为输出参数/* pOld原创 2013-05-30 09:58:49 · 3754 阅读 · 2 评论 -
C++实现全排列(调用next_permutation)
#include #include using namespace std;int main(){ int i; int source[30]; int size; cin >> size; // 初始化待排列数组元素为1、2、3...n for (i = 0; i < size; i++) { source[i] = i + 1; } while (true原创 2013-05-30 08:55:46 · 818 阅读 · 0 评论 -
二叉树中序线索化算法
//// 二叉树线索化的头文件:BinaryThreadTree.h#ifndef B_T_T_H#define B_T_T_H#include //// 返回OK表示正常返回#define OK 1//// 返回ERROR,表示异常返回#define ERROR 0//// 返回OVERFLOW,表示内存溢出#define OVERFLOW -1////原创 2013-05-14 19:23:00 · 1186 阅读 · 0 评论 -
C语言实现二叉树的常用的算法(递归与非递归实现遍历)
队列头文件:#include #include "BinaryTree.h"//// 队列头文件:Queue.h#ifndef QUEUE_H#define QUEUE_H//// 队列最大元素个数#define MAX_QUEUE_SIZE 10typedef BTree QueueElemType;//// 队列结构体typedef struct tagQ原创 2013-05-14 09:43:53 · 1926 阅读 · 0 评论 -
大数的阶乘算法
#include #define MAX_LENGTH 20000// 大数阶乘算法int main(){ int i, j, temp; int bitSize = 1; // 结果的位数 int result[MAX_LENGTH]; int n = 0; // 求n的阶乘 int carryBit = 0; scanf("%d", &n); result[原创 2013-05-29 11:34:17 · 886 阅读 · 0 评论 -
最优二叉树算法
练习做一下构造最优二叉树的算法,不过如何计算WPL呢?本次未能实现,希望懂的人可以帮我解决一下这个问题,不胜感激!//// 头文件:HuffmanTree.h//// 叶子结点的最大数量#define LEAVES_COUNT 4//// 二叉树的最大结点总数#define NODES_COUNT (2 * LEAVES_COUNT - 1)//// 哈夫曼树的结点原创 2013-05-15 20:00:22 · 3433 阅读 · 0 评论 -
两个超大数相加算法
#include #include #include /************************************************************************//* 功能:实现两个超大数相加/* 参数:source1 -- 被加数,字符型数组,如12/* source2 -- 加数,字符型数组,/* result原创 2013-05-29 11:30:28 · 4496 阅读 · 3 评论 -
大数与小数相乘算法
#include #include /************************************************************************//* 功能:大数乘以小数/* 参数:source:字符型数组,作为被乘数,位数小于500位/* result:存放计算结果,并返回/* m:作为乘数,限定m的取值范围为:小于10原创 2013-05-29 11:32:39 · 2434 阅读 · 0 评论 -
大数相乘算法
#include #include #define MAX_LENGTH 1000/************************************************************************//* 功能:计算两个超大数的乘积/* 参数:source1:被乘数,字符型数组,长度最大为MAX_LENGTH/* source2:乘数,字符原创 2013-05-29 11:33:20 · 937 阅读 · 0 评论 -
最大公约数和最小公倍数
#include // 功能描述:求两个数的最大公约数long gcd(int lhs, int rhs){ int r = 0; while (rhs) { r = lhs % rhs; lhs = rhs; rhs = r; } return lhs;}//功能描述:求两个数的最小公倍数long lcd(int lhs, int rhs){ lo原创 2013-05-29 22:52:26 · 725 阅读 · 0 评论 -
m个数中取n个数的组合
#include int a[1000];int end; // 保存输入要取的n值// 从m个数中,取出n个数的组合void Combination(int m, int n){ int i, j; for (i = m; i >= n; i--) { a[n] = i;// 最后一个位置的元素可以取m,m-1,m-2.....n if (n > 1) {原创 2013-05-30 01:51:58 · 6811 阅读 · 2 评论 -
并查集算法
#include #include #include using namespace std;const int MAX_NUM = 100;string name[MAX_NUM];int group[MAX_NUM];int rank[MAX_NUM];void MakeSet(){ for (int i = 0; i < MAX_NUM; ++i) { grou原创 2013-09-20 15:26:39 · 1135 阅读 · 0 评论