
算法导论
hz5034
这个作者很懒,什么都没留下…
展开
-
算法导论20(van Emde Boas树)
【代码】算法导论20(van Emde Boas 树)原创 2015-05-19 22:23:19 · 2612 阅读 · 0 评论 -
算法导论16(贪心算法)
16.1 活动选择问题void recursiveActivitySelector(vector<int> s,vector<int> f,int k,int n,vector<int> &res){ int m=k+1; while(m<=n&&s[m]<f[k])++m; if(m<=n)res.push_back(m);}vector<int> greedyActi原创 2015-06-04 17:01:55 · 591 阅读 · 0 评论 -
算法导论31(数论算法)
31.1 基础数论概念 31.2 最大公约数 gcd(a,b)=gcd(b,a%b)d=gcd(a,b)⇒d|a,d|ba%b=a−b⌊a/b⌋⇒d|(a%b)d|gcd(b,a%b)gcd(a,b)|gcd(b,a%b)d=gcd(b,a%b)⇒d|b,d|(a%b)a=b⌊a/b⌋+a%b⇒d|ad|gcd(a,b)gcd(b,a%b)|gcd(a,b)\begin{array}{l}\g原创 2015-06-23 18:58:16 · 933 阅读 · 0 评论 -
算法导论28(矩阵运算)
//Ax=b,PA=LU//LUx=Pb//Ly=pb,Ux=yvector<double> LUPSolve(vector<vector<double> > L,vector<vector<double> > U,vector<double> p,vector<double> b){ int n=L.size(); vector<double> x(n,0),y(n,0);原创 2015-06-26 10:53:12 · 1528 阅读 · 0 评论 -
算法导论14(数据结构的扩张)
14.1 动态顺序统计 顺序统计树(order-statistic tree)struct node{ int key,color,size; node *left,*right,*p; node():color(BLACK){}};//查找具有给定秩的元素,时间复杂度为O(logn)node *OSSelect(node *x,int i){ int r=原创 2015-05-29 20:15:21 · 610 阅读 · 0 评论 -
算法导论30(多项式与快速傅里叶变换)
A(x)=a0+a1x+⋯+an−1xn−1=∑j=0n−1ajxj(a0+a1x+⋯+an−1xn−1)(b0+b1x+⋯+bn−1xn−1)=a0b0+(a0b1+a1b0)x+⋯+an−1bn−1x2n−2=∑j=02n−2(∑k=0jakbj−k)xj(aj=bj=0,j≥n)\begin{array}{*{20}{l}}{A(x) = {a_0} + {a_1}x + \cdots原创 2015-06-29 20:03:07 · 1744 阅读 · 0 评论 -
算法导论29(线性规划)
29.1 标准型和松弛型标准型: maximize:∑j=1ncjxjsubjectto:∑j=1naijxj≤bi,i=1,2,⋯,mxj≥0,j=1,2,⋯,n\begin{array}{l}{\rm{maximize:}}\quad \sum\limits_{j = 1}^n {{c_j}{x_j}} \\{\rm{subject}}\;{\rm{to:}}\quad \sum\limi原创 2015-06-30 15:29:25 · 2012 阅读 · 0 评论 -
算法导论22(基本的图算法)
1.广度优先搜索#include<iostream> #include<queue>using namespace std; const int N=100;bool visited[N];int d[N],pred[N]; struct Node{ int val; Node *next;};struct Graph { Node Adj[原创 2015-05-20 17:43:01 · 595 阅读 · 0 评论 -
算法导论24(单源最短路径)
1.Bellman-Ford算法原创 2014-10-22 20:46:12 · 664 阅读 · 0 评论 -
算法导论23(最小生成树)
1.Kruskal算法#include#includeusing namespace std;#define m 7#define n 11int p[m],r[m];struct edge{ int u,v,w;};bool cmp(edge a,edge b){ return a.w<b.w;}void Make_Set(int x) {原创 2014-12-15 15:33:32 · 662 阅读 · 0 评论 -
算法导论15(动态规划)
15.1 钢条切割//自顶向下递归实现int cutRod(int *p,int n){ if(n==0)return 0; int q=INT_MIN; for(int i=1;i<=n;++i)q=max(q,p[i]+cutRod(p,n-i)); return q;}//带备忘的自顶向下法int memoizedCutRodAux(int *p,int原创 2015-06-03 10:45:19 · 580 阅读 · 0 评论 -
算法导论33(计算几何学)
1.叉积 p1×p2=x1*y2-x2*y1=-p2×p12.确定连续线段是向左转还是向右转3.判断两条线段是否相交struct point{ int x,y;};int direction(point pi,point pj,point pk){ //pkpi×pjpi return (pk.x-pi.x)*(pj.y-pi.y)-(pj.x-pi.x)*(pk.y原创 2015-05-21 21:01:14 · 1763 阅读 · 0 评论 -
算法导论19(斐波那契堆)
const int D=3;struct node{ int key,degree; node *p,*child,*left,*right; bool mark; node(int x):key(x),degree(0),p(NULL),child(NULL),left(NULL),right(NULL),mark(false){}};struct Fib原创 2015-05-17 22:33:26 · 1233 阅读 · 0 评论 -
算法导论18(B树)
const int t=2;struct node{ int n; char key[2*t];//key[0]保留,key[1..2*t-1] bool leaf; node *c[2*t+1];//c[0]保留,c[1..2*t] node(int x,bool y):n(x),leaf(y){}};void BTreeCreate(node *roo原创 2015-05-14 22:05:16 · 760 阅读 · 0 评论 -
算法导论21(用于不相交集合的数据结构)
21.1不相交集合的操作不相交集合数据结构()原创 2014-10-31 20:47:21 · 647 阅读 · 0 评论 -
算法导论13(红黑树)
插入 当前结点z为红色,父结点z->p为红色: (1)叔结点为红色; (2)叔结点为黑色,且当前结点z为右孩子; (3)叔结点为黑色,且当前结点z为左孩子。 删除 在while循环中,x总是指向一个具有双重黑色的非根结点。while循环的目标是将额外的黑色沿树上移,直到: (1)x指向红黑结点,此时在最后一行中,将x着为(单个)黑色; (2)x指向根结点,此时可以简单地“移除”额原创 2015-04-15 21:42:55 · 766 阅读 · 1 评论 -
算法导论12(二叉搜索树)
1.算法导论struct node{ int key; node *left,*right,*p;};void inorderTreeWalk(node *x){ if(x) { inorderTreeWalk(x->left); cout<<x->key<<' '; inorderTreeWalk(x->righ原创 2015-04-14 21:51:58 · 571 阅读 · 0 评论 -
算法导论25(所有结点对的最短路径问题)
25.1最短路径和矩阵乘法原创 2014-10-30 12:06:51 · 2143 阅读 · 0 评论 -
算法导论26(最大流)
26.1流网络26.2Ford-Fulkerson方法原创 2014-11-07 15:00:27 · 3225 阅读 · 0 评论 -
算法导论32(字符串匹配)
1.朴素字符串匹配算法2.Rabin-原创 2014-10-06 21:59:20 · 764 阅读 · 0 评论 -
算法导论11(散列表)
1.直接寻址表#include using namespace std;#define m 10#define n 4typedef struct{ int key; int satellite;}data;data *direct_address_search(data *T[],int key){ return T[key];}void dire原创 2014-10-16 11:45:03 · 585 阅读 · 0 评论 -
算法导论10(基本数据结构)
10.1 栈和队列 10.1-7class stack{public: void push(int); void pop(); int top();private: queue<int> a,b;};void stack::push(int x){ if(b.empty())a.push(x); else b.push(x);}void原创 2015-04-19 11:01:57 · 1297 阅读 · 0 评论