算法总结
文章平均质量分 62
Kernight
骨灰级程序员。
展开
-
C语言的一些排序方法
(1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码:void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;i<n-1;i+转载 2013-10-29 13:33:19 · 842 阅读 · 0 评论 -
Manacher算法:求解最长回文字符串,时间复杂度为O(N)
回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。经常有一些题目围绕回文子串进行讨论,比如POJ3974最长回文,求最长回文子串的长度。朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、后缀数组、AC 自动机,这道题目转载 2015-03-11 22:49:27 · 516 阅读 · 0 评论 -
最长上升子序列LIS算法实现
LIS(Longest Increasing Subsequence)最长上升(不下降)子序列,有两种算法复杂度为O(n*logn)和O(n^2)。在上述算法中,若使用朴素的顺序查找在D1..Dlen查找,由于共有O(n)个元素需要计算,每次计算时的复杂度是O(n),则整个算法的时间复杂度为O(n^2),与原来算法相比没有任何进步。但是由于D的特点(2),在D中查找时,可以使用二分查找高效地完成,转载 2015-03-10 01:09:33 · 584 阅读 · 0 评论 -
背包的硬币问题
首先说没限制的硬币问题吧:先看这个问题:在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 我们用dp[n]表示用这些硬币组成n的方法总数。。。。 然后随着硬币种类的增加来更新dp[]的值,也就是最外面的一层循环for(i :1-->3)开始初始化的时候没有硬币,然后新来了面值为1的硬币,接着又来了面值为2的硬币。。。。原创 2014-07-10 20:40:11 · 724 阅读 · 0 评论 -
错排公式
错排公式的由来 pala提出的问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法? 这个问题推广一下,就是错排问题: n个有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。递推的方法推导错排公式 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-原创 2014-07-10 17:26:06 · 749 阅读 · 0 评论 -
2014省赛大总结(一) DFS 与 BFS
第一部分:DFS DFS(深度优先搜索),深度优先搜索法与回溯法差不多,主要的区别是回溯法在求解过程中不保留完整的树结构,而深度优先搜索则记下完整的搜索树,搜索树起记录解路径和状态判重的作用。为了减少存储空间,在深度优先搜索中,用标志的方法记录访问过的状态,这种处理方法使得深度优先搜索法与回溯法没什么区别了。 深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。原创 2014-05-08 17:29:50 · 1000 阅读 · 0 评论 -
2014省赛大总结(四) 字典树
#include#include#includeusing namespace std;struct node{ node *next[26]; int count; node(){ //构造函数,初始化数据 memset(next,0,sizeof(next)); count=0; }};int maxi;原创 2014-05-10 09:33:38 · 666 阅读 · 0 评论 -
2014省赛大总结(三) 双线DP
/* http://acm.nyist.net/JudgeOnline/problem.php?pid=61 传纸条 http://acm.nyist.net/JudgeOnline/problem.php?pid=712 探 寻 宝 藏 题意:给一个矩阵,求两条不相交的线从左上角到右下角经过的元素的最大和 双线dp - 即同时考虑两条不相交的线,使其线上的和原创 2014-05-08 23:53:44 · 712 阅读 · 0 评论 -
2014省赛大总结(五) 区间查询二三事
第一部分:树状数组 树状数组的适用范围原创 2014-05-10 09:42:07 · 692 阅读 · 0 评论 -
背包九讲
背包问题是动态规划的经典问题,由此演化的各种转载 2014-05-08 17:40:14 · 694 阅读 · 0 评论 -
2014省赛大总结(二) 最长公共子序列系列
背包问题作为动态规划问题中的一代经典,原创 2014-05-08 18:03:38 · 734 阅读 · 0 评论 -
KMP算法详解(转)
作者:July。出处:http://blog.csdn.net/v_JULY_v/。引记 此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕碰碰,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文转载 2014-03-01 23:09:45 · 843 阅读 · 0 评论 -
C语言程序设计教程(第三版)课后习题11.8 链表合并及操作
题目描述已有a、b两个链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。输入格式第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成输出按照学号升序排列的数据样例输入2 35 1006 893 824 952 10样例原创 2013-12-09 19:47:53 · 3787 阅读 · 0 评论 -
博客迁移到 https://blog.kernight.com
博客迁移到 http://blog.ykgzs.com弄了好几天,终于把主机搞定了。原来有一个博客,自从自己开始做web开发之后,就觉得应该有一个自己独立的主机,这样子做的demo就能很直接的呈现出来,而且平时做一些开发也能消除局限性了。不管怎么说,也算一个新的开始,继续加油吧。访问:http://blog.ykgzs.com 是我的博客原创 2015-12-05 23:04:34 · 1403 阅读 · 0 评论