算法导论
u010969626
这个作者很懒,什么都没留下…
展开
-
动态规划之钢条切割问题自底向上发的实现(算法导论第15章)
看算法导论的同学应该知道第15章在讲动态规划,以钢条切割问题作为引论,那么钢条切割问题实际的C代码是怎么实现的呢?图表和题目我就不叙述了,直接看代码// steercut.cpp : Defines the entry point for the console application.//// 钢条切割问题.cpp : Defines the entry point for the consol原创 2016-05-17 20:22:37 · 740 阅读 · 0 评论 -
算法导论第15章15.2-6
利用归纳法即可证明。当n为1时,不需要括号,当n=2时 恰好有1对括号。假设当n=k(2原创 2017-02-08 17:20:43 · 513 阅读 · 0 评论 -
算法导论第15章15.2-5
第九行 for 循环执行j-i次,即为l-1次,调用m[i,j] 2(l-1)次,加上外面两层循环一共1/3(n^3-n)原创 2017-02-08 16:47:43 · 1798 阅读 · 0 评论 -
算法导论第15章15.2-1
找了一段C实现的矩阵链乘法#include "stdafx.h"#include#include#define N 1000int m[N][N]; //m[i][j]表示从第i个矩阵乘到第j个矩阵所需的最小代价int s[N][N]; //s[i][j]表示最优值m[i][j]对应的分割点int p[N]; //p[]代表矩阵链void MATRIX_原创 2017-02-06 17:47:57 · 2647 阅读 · 0 评论 -
算法导论第15章习题15.1-4
定义全局变量k存储子函数计算最大收益时的变量i#include "stdafx.h"#include using namespace std;int k=0;int Max(int a, int b){return a>b ? a : b;}int MEMOIZED_CUT_ROD_AUX(int p[], int n, int r[],int &k){原创 2017-02-05 12:59:45 · 1429 阅读 · 0 评论 -
算法导论第18章 18-1
18.1-1 根据B树的定义 每个节点包含的关键字的个数有上界和下界,用一个被称为B树的最小度数的固定整数t来表示这些界。除了根节点以外的每个节点必须至少有t-1个关键字。除了根节点以外的每个内部节点至少有t个孩子,如果树非空,根节点至少有一个关键字。每个节点之多可包含2t-1个关键字。每个节点之多有2t个孩子。由此可见如果树的最小度数为1,根节点以外的每个节点至少有原创 2016-07-18 22:39:19 · 946 阅读 · 1 评论 -
算法导论第六章堆排序6.3
6.3-1 10和22交换 17和19交换 3和84交换 5和84交换 5和22交换 5和10交换6.3-2 BUILD-MAX-HEAP要满足根节点的左右子树均是最大堆,如果循环从A.length/2开始,该节点是刚开始有叶子节点的点,符合条件6.3-3原创 2016-06-21 22:48:42 · 401 阅读 · 0 评论 -
算法导论第六章堆排序6-2
6.2-1 第一遍交换10和3 第二遍交换10和96.2-2 6.2-2 MIN-HEAPIFY(A, i) 1 l <- LEFT(i) 2 r <- RIGHT(i) 3 if l <= heap-size[A] and A[l] < A[i] 4 then sm原创 2016-06-21 20:25:09 · 952 阅读 · 0 评论 -
算法导论第六章6.5
6.5-1 1覆盖堆顶15,堆的大小减一,1和13交换,1和12交换,1和6交换,返回156.5-2 堆的大小加1 A[heap-size]= 10 10和8交换 10和9交换6.5-3 这个借用一篇博客上写的东西,看了一下,伪代码写的很正确HEAP-MINIMUM(A) 1 return A[1] HEAP-EXTRACR-MIN(A) 1 if原创 2016-07-05 19:09:16 · 1619 阅读 · 0 评论 -
算法导论第6章堆排序
第6.1-1 元素的最少个数是1+2+4+........2^(k-1)+1=2^k 元素个数最多为1+2+4+......+2^(k)=2^(k+1)-1。6-1-2:解:根据上一题我们可以知道,对于有n个元素的堆,必须满足如下式子: 2h <= n h+1-1 h+1,所以又h 6.1-3:如定义:A{PARENT(i)}>=A[i].可见父节点要大于等于原创 2016-06-16 23:42:42 · 369 阅读 · 0 评论 -
算法导论第六章6.4
6.4-1 注意要先建最大堆,每次交换后要保持最大堆的性质。6.4-2 先说说什么是循环不变量,所谓循环不变量就是在某个循环过程维持某个性质不变。(比如求最大值,最大堆,最小堆,最小值,这个性质在每次循环过程中都是不变的)针对该题,这个性质就是子数组A【1......i】包含了数组A【1......n】中第i小元素的最大堆,而子数组A【i+1,,,,n】包含了数组A【1......n】原创 2016-06-24 23:35:50 · 1874 阅读 · 0 评论 -
算法导论第十五章15.2-4
算法导论第15章368页,当思考一个动态规划问题时,我们应该弄清楚所涉及的子问题与子问题的依赖关系,问题的子问题图准确的表达了这些信息。那么根据此图可以来回答题目15.2-4.输入链长度为n那么矩阵数目为n-1,所以子问题图一共包含n-1个定点,一共包含1+2+3+......+n-1=1/2(n^2-n)条边,这些边连接原问题顶点和比其更小的子问题的顶点原创 2017-02-08 17:07:03 · 1375 阅读 · 1 评论