算法导论
copbint
种一棵树,最好的时间是十年前,其次是现在!!<br>
有问题交流与讨论可以直接加我微信"copbint",CSDN回复非常不及时。
很多东西记了只是方便自己复习的,如果觉得没啥帮助请轻喷。
展开
-
算法导论第十五章15-2最长回文子序列
利用lcs(最长公共子序列)算法,思路是直接将另一个字符串设为要求最长回文子序列的字符串的反序即可;#include "StdAfx.h"#include #include using namespace std; void lcs_length(vectorp,vectorq,vector>&c){ int m = p.size(); int n = q.size();原创 2016-10-22 18:00:54 · 915 阅读 · 0 评论 -
算法导论第十五章15.2矩阵链乘法(使矩阵所需标题乘法的次数最少)c++
#include "StdAfx.h"#include #include using namespace std; vector>m(10);vector>s(10);void matrix_chain_order(vectorp){ int length = p.size()-1;//p元素的个数比矩阵个数多1 for(int l=2;l<= length;l++)//矩原创 2016-10-20 12:26:34 · 703 阅读 · 0 评论 -
算法导论第八章计数排序-基数排序-桶排序-c++
1.计数排序#include "stdafx.h"#include #include #include #include #include using namespace std;int* countSort(int a[],int n,int k)//n means the length of a,k means the max of a[i]+1{ int *b = ne原创 2016-10-07 12:41:37 · 364 阅读 · 0 评论 -
算法导论第十四章思考题14-1详解-求最大重叠点
题目:Suppose that we wish to keep track of a point of maximum overlap in a set of intervals—a point that has the largest number of intervals in the database overlapping it.a.略b.Keep a balanced原创 2016-10-19 13:44:36 · 3526 阅读 · 0 评论 -
算法导论第七章思考题7-5三数取中划分 -c++
//算法导论第七章思考题7-5三数取中划分 //当需要排序的数达到一定的规模之后 三数取中划分具有明显的速度优势#include "stdafx.h"#include #include #include #include #include using namespace std;typedef struct Par_result{ int q; int t;原创 2016-10-04 03:06:58 · 692 阅读 · 0 评论 -
算法导论第七章思考题7-2针对相同元素的快速排序-c++
#include "stdafx.h"#include #include #include #include #include using namespace std;typedef struct Par_result{ int q; int t;};Par_result PARTITION(int a[],int p,int r){ int x = a[r]; in原创 2016-10-04 02:04:14 · 1164 阅读 · 0 评论 -
算法导论第七章-思考题7-1HOARE-QUICKSORT-C++
#include "stdafx.h"#include #include #include #include #include using namespace std;int HOARE_PARTITION(int a[],int p,int r){ int x = a[p]; int i = p - 1; int j = r + 1; while(i<j) { do原创 2016-10-04 00:36:23 · 691 阅读 · 0 评论 -
算法导论第七章-快速排序-c++
#include "stdafx.h"#include #include #include #include #include using namespace std;int PARTITION(int a[],int p,int r){ int x = a[r]; int i = p - 1; for(int j=p;j<=r-1;j++) { if(a[j] <原创 2016-10-03 23:26:43 · 287 阅读 · 0 评论 -
算法导论第六章-堆排序c++
#include "stdafx.h"#include #include #include #include #include using namespace std;void MAX_HEAPIFY(int a[],int i,int n)//n是堆中元素的总数 from 1 to n{ int left = i<<1; int right = left+1; int l原创 2016-10-02 15:09:55 · 341 阅读 · 0 评论 -
算法导论第五章
题目:Describe an implementation of the procedure RANDOM(a, b) that only makes calls to RANDOM(0, 1). What is the expected running time of your procedure, as a function of a and b?#include "stdio.h原创 2016-09-30 14:04:20 · 429 阅读 · 0 评论 -
算法导论第十六章贪心算法-思考题16-1找零问题
通过观察,前面三个小问勉强明白,能举出反例。但是没有得到一个有效的方法证明什么情况能用贪心算法,什么情况不能。d小问的思路:假设m(n)表示找零n美分需要的最少硬币数,硬币面值为c1,c2, ...,ck,并令m[0]=0,则m(n)=1如果n等于某个ci,否则m(n) =min{ m(n-c1)+1, m(n-c2)+1, ..., m(n-ck)+1 }代码如下:#incl原创 2016-10-25 17:15:37 · 8171 阅读 · 3 评论 -
Strassen矩阵乘法算法-c++实现
基本完全参考以下文章实现,不过是看了一遍之后自己为了加深理解手写的。http://www.mamicode.com/info-detail-673908.html#include "stdafx.h"#include #include #include #include using namespace std;template class Strassen{publi原创 2016-09-28 23:15:21 · 3592 阅读 · 0 评论 -
算法导论第十二章-二叉搜索树的插入(递归与非递归),中序输出(递归,用栈,既不用栈也不递归)以及节点的删除
算法导论第十二章-二叉搜索树的插入(递归与非递归),中序输出(递归,用栈,既不用栈也不递归)以及节点的删除本文章中建立的树结构如下:#include "stdafx.h"#include #include #include #include #include using namespace std;typedef struct Node{ int key;原创 2016-10-14 14:18:25 · 703 阅读 · 0 评论 -
算法导论-求最大子数组-分治策略 c++版本
#include "stdafx.h"#include #include #include #include using namespace std;typedef struct Max_info{ int low; int high; int max_sum;}; //0 //7 15int a[20] = {13,-3,-25,原创 2016-09-25 00:50:03 · 392 阅读 · 0 评论 -
算法导论第十六章贪心算法-0-1背包问题
这有一篇思路讲得比较清楚的文章: 动态规划0—1背包问题贴一下自己的代码:#include "StdAfx.h"#include #include using namespace std; void package_0_1_problem(vectorw,vectorv,vector>&m,int package){ int n = w.size()原创 2016-10-24 15:58:43 · 570 阅读 · 0 评论 -
算法导论第十五章15-3双调欧几里得旅行商问题
虽然知道这道题要用动态规划,但是自己还是参考了别人的想法才做出来。知道一个算法和深刻理解并能熟练运用一个算法果然不是同一件事。思路:P0,P1,.....Pn-1为按x坐标从小到大排列的n个点(从下标0开始),get_dis(Pi,Pj)表示这两个点之间的距离。规定i分为以下三种情况:1.i = ji到j的最优解,Pj可能直接与P0~Pi-1中任何一个点相连,所以:dist[i][j] = min原创 2016-10-23 00:42:14 · 984 阅读 · 1 评论 -
算法导论第十五章15.5-2构造最优二叉搜索树
#include "StdAfx.h"#include #include using namespace std; void optimal_bst(vector&p,vector&q,vector>&e,vector>&w,vector>&root){ int n = p.size() - 1; for(int i=1;i<=n+1;i++) { e[i][i-1] =原创 2016-10-22 10:44:50 · 3230 阅读 · 0 评论 -
算法导论第八章思考题-c++
8-2.e 线性时间的原址排序#include "stdafx.h"#include #include #include #include #include using namespace std;void sort_WithLinerCost_InOriginPlace(int a[],int n,int k)//所有的元素都属于1到k{ int *c = new int[原创 2016-10-08 04:04:25 · 656 阅读 · 0 评论