![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 74
love-pearl
丑到特别帅
展开
-
最大连续子串问题
具体问题请参考最大连续子串,上班也没什么时间闲睱工夫写了一个答案,也费了近一个多小时间,开始还有错就是在处理0的问题上,后来改正了,算法大致思路是把这个串分成两类来对待0和非0,然后分别处理,最后再从头去掉影响最大乘积的项,生成最终的新的子串,具体代码如下:#include #include #include int main(){ //float arr[] = {-2原创 2013-03-25 11:35:55 · 590 阅读 · 0 评论 -
最大公共字串
#include #include #include /* * 求数组 a 与 b 的最长公共子序列 * */#define LEFT_UP 0x1#define LEFT 0x2#define UP 0x4int get_long_common_subsequence(char *a, int al, char*b, int bl, int ***c)原创 2013-08-28 17:18:11 · 532 阅读 · 0 评论 -
矩阵链最优相乘括号法
#include #include #include int* print_max_len_inc_subsq(int *seq, int n){ //记录各个递增子序列的长度 int *tmp = (int*)malloc((n+1)*sizeof(int)); int *max = (int*)malloc((n+1)*sizeof(int)); me原创 2013-08-28 17:15:58 · 1056 阅读 · 0 评论 -
最长递增子序列
利用动态规划(dynamic-programming)计算一个序列中,最长递增子序列的长度如果序列a只有一个元素,则子序列唯一,且长度为1;如果序列a长度大于1,则,当a的最后一个元素比前一个元素大并且当且最长递增子序列已经不是最长的了,则更新最长递增子序列信息: | 1 a.len = 1;原创 2013-08-29 10:34:57 · 506 阅读 · 0 评论 -
堆排序
#include #include #include #define PARENT(x) ((x-1)>>1)#define LEFT(x) (((x)<<1)+1)#define RIGHT(x) (((x)<<1)+2)//#define LEFT(x) ((x)<<1)//#define RIGHT(x) (((x)<<1)+1)int count = 0;void m原创 2013-08-29 16:11:03 · 532 阅读 · 0 评论 -
算法--插入排序
#include #include /* * 插入排序 n^2为的效率。 * 具体思想: * 将数组分为两部分,一部分是有序的,一部分为无序的 * 然后从无序中选取一个数插入在有序的数中的恰当的位置, * 以此迭代,直到无序的数全部遍厉完毕 */void insert_sort(int a[], int n){ int i = 1; int ti =原创 2013-08-29 16:33:28 · 473 阅读 · 0 评论 -
找小于某一整数内的素数
#include #include #include #include /* * 求n以内的素数,并打印,反回素数的个数 * 主要算法为筛法 * 主要思想是: 素数的除1以外的倍数必然不是素数 * 将所有素数的倍数全部都"筛掉",那剩下的必然都是素数 */int print_prim(int n);/* * 求n以内的素数,并打印,反回素数的个数原创 2013-08-29 14:24:51 · 860 阅读 · 0 评论