摘要:
题目描述: 从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。分析: 这可以用双端LIS方法来解决,先求一遍从左到右的,再求一遍从右到左的。最后从里面选出和最大的即可。代码实现:#include using namespace std;int DoubleEndLI... 阅读全文
摘要:
最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2)。但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n)。 具体分析参考:http://blog.chinaunix.net/uid-26548237-id-3757779.html 代... 阅读全文
摘要:
算法介绍: SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。算法流程: 算法大致流程是用一个队列来进行维护。 初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的... 阅读全文
摘要:
Floyd也是采用动态规划的方案来解决在一个有向图G=(V,E)上每对顶点间的最短路径问题。运行时间为Θ(V3)。算法分析: 用邻接矩阵map[][]存储有向图,用dist[i][j]表示i到j的最短路径。设G的顶点为V={1,2,3...n},对于任意一对顶点i,j属于V,假设i到j有路径且... 阅读全文
摘要:
用动态规划的方法,解决有些爱那个图G=(V,E)上每对顶点间的最短路径问题。路径图用邻接矩阵存储。具体的描述参考:http://tayoto.blog.hexun.com/26047245_d.html里面的第一点的介绍。直接上代码:/*******************************... 阅读全文
摘要:
Dijkstra算法树解决有向图G=(V,E)上带权的单源最短路径问题,但是要求所有边的权值非负。解题思路: V表示有向图的所有顶点集合,S表示那么一些顶点结合,从源点s到该集合中的顶点的最终最短路径的权值(程序中用dist[i]表示)已经确定。算法反复选择具有最短路径估计的顶点u 属于 V-S(... 阅读全文
摘要:
问题描述: 有一个需要使用每个资源的n个活动组成的集合S={a1,a2,···,an},资源每次只能由一个活动使用。每个活动a都有一个开始时间和结束时间,且0 File Name: Activity_selector.c > Author: He Xingjie > Mail: gxm... 阅读全文
摘要:
优先队列小析 优先队列的模板:template ,class Compare = less > class priority_queue; 可以看出priority_queue的模板声明带有三个参数,T为数据类型,Container为保存数据的容器,,Compare为元素比较方式,其中Contai... 阅读全文
摘要:
算法导论上的题目,用动态规划算法解矩阵链乘法问题需要时间为O(n^3),空间为O(n^2)。 问题描述: 给定n个矩阵构成的一个链(A1*A2*A3……*An),其中i=1,2,……n,矩阵Ai的维数为p(i-1)*p(i),对于乘积A1*A2*A3……*An以一种最小化标量乘法次数的方式进... 阅读全文
摘要:
对给定字符串删除特定字符或者是特定字符串。对字符串操作一定要注意结束符'\0'的处理。// StrDeleteChar.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"void StrDeleteChar(char *str, char ch){//删除字符串s... 阅读全文