Algorithm
老虞面馆
这个作者很懒,什么都没留下…
展开
-
最长有序子序列 经典DP
给一串数据I012345678num[I]147258369来得到其对应位上的数据的最长有序子序列的长度L;这是个经典的DP问题。在这里我们利用F[i]的数组;来储存其之前数据的最长有序子序列进而得到后面的。/*最长有序原创 2015-08-24 21:48:39 · 797 阅读 · 0 评论 -
Dijkstra最短路
邻接矩阵表示#include<stdio.h>#include<map>#include<queue>#include<string.h>#include<math.h>#include<algorithm>#include<vector>using namespace std;#define MAX_V 510#define INF 1000000000int n;int m;原创 2017-02-28 16:33:40 · 412 阅读 · 0 评论 -
递归下降语法分析实验
一、实验目的通过设计、开发一个高级语言的递归下降语法分析程序,实现 对词法分析程序所提供的单词序列进行语法检查和结构分析,加 深对相关课堂教学内容的理解,提高语法分析方法的实践能力。二、实验要求(1)理解语法分析在编译程序中的作用,以及它与词法分析程序的 关系; (2)掌握递归下降语法分析方法的主要原理; (3)理解递归下降分析法对文法的要求; (4)熟练掌握Select集合的求解方法;原创 2016-10-30 09:02:46 · 12839 阅读 · 0 评论 -
词法分析实验
一、实验目的通过设计、开发一个高级语言的词法分析程序,加深对课堂教 学内容(包括正规文法、正规表达式、有限自动机、NFA到DFA的 转换、DFA的最小化)的理解,提高词法分析方法的实践能力。二、实验要求(1)深入理解、掌握有限自动机及其应用; (2)掌握根据语言的词法规则构造识别其单词的有限自动机的方 法; (3)掌握NFA到DFA的等价变换方法、DFA最小化的方法; (4)掌握设计、编原创 2016-10-30 09:00:46 · 4213 阅读 · 0 评论 -
Bellmanford 最短路(1)
Bellman-Ford算法1.单源最短路 2.可处理包含负值的环路原理:当我们寻找一条最短路时,假设源节点2可以到达的节点v,设p=<\v0,\v1,\v2,\v3,\v4>为最短路,则最短路径包含4-1=3条边,我们在操作中松弛了每条边。第i次松弛我们则找到<\V*i-1*,\Vi>条路。所以我们只要对E条边分别进行V-1次操作即可#include<iostream>#define MAX_原创 2016-03-12 18:40:22 · 465 阅读 · 0 评论 -
快速排序实现(QuickSort)
快速排序两种实现#includeusing namespace std;int a[100];//function declearvoid quickSort(int a[],int p,int r);void exchange(int i,int j);int positon(int a[],int p,int r);void quickSort(原创 2016-03-10 14:04:57 · 344 阅读 · 0 评论 -
最小生成树kruskal
#include<iostream>#include<algorithm>#define MAX_V 100001#define MAX_E 100001using namespace std;int set[MAX_V];struct edge{ int u; int v; int cost;};edge es[MAX_E];int V,E;int find(i原创 2016-03-19 00:37:13 · 263 阅读 · 0 评论 -
0/1 背包 dp问题
//20160126//0/1背包 //W 能装下的重量//w 该物品的重量//v 该物品的价值 #include#include using namespace std;#define MAX_N 101int n;pair object[MAX_N];//first=w,second=vint W;int dp[MAX_N][MAX_N];int rec(in原创 2016-01-26 22:21:10 · 431 阅读 · 0 评论 -
简单贪心 区间调度问题
有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作,你都可以选择 参与与否 ,如果选择了参与,那么自始至终都必须全程参加。此外,参与工作的时间段 不能重叠(即使是开始的瞬间和结束的瞬间的重叠也是不允许的) 。 限制 00输入5 1 2 4 6 8 3 5 7 9 10输出 3按照结束时间排序即可#in原创 2016-01-09 09:35:39 · 469 阅读 · 0 评论 -
BFS 迷宫的最短路径
迷宫的最短路径给定一个大小为N*M的迷宫。迷宫由通道和墙壁组成,每一步可以 向邻接的上下左右四个方位的通道移动,请求出从起点到终点所需的最小不熟。此题假设一定能从起点到终点限制条件:N,M 样例:输入:10 10#S######.#......#..#.#.##.##.#.#........##.##.####....#.原创 2016-01-08 21:52:45 · 649 阅读 · 0 评论 -
DFS 部分和问题
给定整数a1,a2,a3`````an,判断是否可以从中选出若干数,使他们的和恰好为K限制条件: 1-10^8-10^8样例1输入 n=4a={1,2,4,7}k=13输出Yes样例2输入n=4a={1,2,4,7}k=15输出No#includeusing namespace std原创 2016-01-06 23:40:06 · 334 阅读 · 0 评论 -
计数排序
计数排序的思想是一个线性时间O(n)的排序,基本思想对每一个输入元素x,确定小于x的元素个数。利用这个可以直接把x放在其数组的位置上。#includeusing namespace std;int main(){ int A[]={0,3,4,1,2,1,5,6,7}; int C[20]={0}; int B[9]={0}; for(int i=1;i<=原创 2015-10-13 22:59:16 · 404 阅读 · 0 评论 -
堆排序 HeapSort
堆排序#includeusing namespace std;void HeapAdjust(int H[],int s,int m){ int rc=H[s]; for(int j=2*s;j<m;j*=2) { if(j<m&&H[j]<H[j+1]) j++; if(rc>H[j]) break; H[s]=H[j]; s=j; } H[原创 2016-02-20 20:47:39 · 340 阅读 · 0 评论