
算法基础(第五版)
DayOneMore
这个作者很懒,什么都没留下…
展开
-
算法2.2 合并排序
问题:将n个键排列为非递减顺序。 输入:正整数n;键的数组S,其索引范围为1-n, 输出,数组S,其中键按照非递减排序。//C/C++#include<iostream>#include<stdio.h>#include<stdlib.h>using namespace std;//归并排序void Merge(int h,int m,const int U[],const int V原创 2017-03-03 16:02:29 · 315 阅读 · 0 评论 -
Prim算法
Prim算法原创 2017-03-26 23:34:04 · 493 阅读 · 0 评论 -
Floyd最短路径算法
书本算法3.3 P64 D(k)[i][j]=minimum(D(k−1)[i][j],D(k−1)[i][k])+D(k−1)[k][j])D^{(k)}[i][j]=minimum(D^{(k-1)}[i][j],D^{(k-1)}[i][k])+D^{(k-1)}[k][j])#include<iostream>#include<stdio.h>#include<stdlib.h>#i原创 2017-03-11 13:09:18 · 330 阅读 · 0 评论 -
任务安排问题(贪心法)
贪心法满足条件:1.贪心选择性 2.优化子结构输入:S={1,2,……,n}个任务,F={[Si ,f i]},为任务的开始时间和结束时间**输出:**S的最大相容集合(也就是如何选择任务,才能执行最多的任务?)贪心思想: 为了选择最多的相容活动,每次选fi最小的活动,也就是结束时间最小的活动,使我们能够余下更多的时间选择更多的活动。算法伪代码:贪心-Activity-Selector(S,F)原创 2017-03-31 23:24:48 · 3602 阅读 · 1 评论 -
带有最终期限的调度安排
头文件:#include 格式: sort(a,a+n)代表从a首地址到a的尾地址.sort(a,a+n,cmp)cmp为自定义的函数,使得sort按自己的意愿排序.1.bool cmp(类型名称 a,类型名称 b){return a>b;} 使得数组从大到小排序 2.bool cmp(结构体名称 a,结构体名称 b){return a.data1>b.data1;}原创 2017-03-29 11:34:09 · 1007 阅读 · 0 评论 -
3.5节最优二叉查找树
#include<iostream>#include<stdio.h>#include<stdlib.h>#include <string.h>#include<algorithm>#define keytype intusing namespace std;keytype Key[20]={4,5,6,7};//包含了n个键float p[20]={3/8,3/8,1/8,1/8};原创 2017-03-14 23:57:45 · 631 阅读 · 0 评论 -
算法3.8查找二叉树
#include#include#include#include #includeusing namespace std;struct nodetype{ int key; nodetype* left; nodetype* right;};typedef nodetype* node_pointer;//算法3.8二叉查找树void binsear原创 2017-03-13 20:59:49 · 294 阅读 · 0 评论 -
矩阵链乘法求两矩阵相乘所需的最小次数(算法3.6&3.7)
使用动态规划方法,n个矩阵相乘有以下递归性质: M[i][j]=min(i<=k<=j−1)(M[i][k]+M[k+1][j]+di−1dkdj) (if i<j)M[i][j]=min_{(i<=k<=j-1)}(M[i][k]+M[k+1][j]+d_{i-1}d_{k}d_{j})\ \ (if\ \ i<j ) M[i][j]=0M[i][j]=0#include<iostream原创 2017-03-12 10:47:48 · 3051 阅读 · 0 评论 -
算法3.12 使用分治法的序列对准
这是一种效率即为底下的方法,在运行的时候,能够感觉出他有多慢,后面会有使用DP的方法#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string>#include<string.h>#include<math.h>#include<algorithm>using namespace std;//算法3.12原创 2017-03-21 22:02:45 · 362 阅读 · 0 评论 -
floyd最短路径算法2,求出经过哪些路径
#include<iostream>#include<stdio.h>#include<stdlib.h>#include <string.h>#include<algorithm>using namespace std;//最短路径算法 2//数组的下标从0开始,但是算法下标从1开始,所以将数组0位的空着,方便理解。int W[6][6];int D[6][6];//最后的最短路径原创 2017-03-11 17:36:11 · 623 阅读 · 0 评论 -
Fibonacci数的矩阵计算
1.传统的递归形式复杂度非常高,这里就不详细说明了2.传统的迭代形式属于动态规划方法,有一些重复的项就不用计算了3.矩阵的方法Fn+1=1∗Fn+1∗Fn−1F_{n+1}=1*F_{n}+1*F_{n-1} Fn=1∗Fn+0∗Fn−1F_{n}=1*F_{n}+0*F_{n-1} 特征方程的方法 化成矩阵的形式#include<iostream>#include<stdio.h>#in原创 2017-03-11 10:32:52 · 524 阅读 · 0 评论 -
快速幂-Θ(logn)算法
原理x8x^8 x8=x4∗x4x^8=x^4*x^4 x4=x2∗x2x^4=x^2*x^2 x2=x∗xx^2=x*x 只需要三次乘法x11x^{11} x11=x∗x5∗x5x^{11}=x*x^5*x^5 x5=x∗x2∗x2x^5=x^*x^2*x^2 x2=x∗xx^2=x*x 五次乘法int Plog(int x,int n){ int y,y0;原创 2017-03-10 20:22:30 · 508 阅读 · 0 评论 -
算法2.6&2.7快速排序
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;int S[9];void Partition(int low,int high,int &pivotpoint){ int pivotitem=S[low]; int j=low;原创 2017-03-03 20:20:13 · 349 阅读 · 0 评论 -
八皇后问题
回溯(Backtracking)算法不需要实际创建树,只需要跟踪当前研究分支中的值,状态空间树在这个算法中是隐式存在的,因为没有实际构建他。 需要使用蒙特卡洛方法(Monte Carlo Algorithm)估算回溯算法的效率。#include<iostream>#include<math.h>using namespace std;//算法5.1八皇后问题的回溯算法int col[10];/原创 2017-04-25 18:38:23 · 769 阅读 · 0 评论