算法设计与分析
linzhuzui
zyh
展开
-
《算法设计与分析》学习笔记_第六章_矩阵链乘法问题
1、矩阵链乘法问题的描述 给定n个矩阵构成的一个链1,A2,A3,.......An>,其中i=1,2,...n,矩阵A的维数为pi-1pi,对乘积 A1A2...An 以一种最小化标量乘法次数的方式进行加全部括号。 注意:在矩阵链乘问题中,实际上并没有把矩阵相乘,目的是确定一个具有最小代价的矩阵相乘顺序。找出这样一个结合顺序使得相乘的代价最低。(1)动态规划分析过程动态规划第原创 2014-12-16 20:31:32 · 912 阅读 · 0 评论 -
《算法设计与分析》学习笔记_第六章_最长单调递增子序列个数问题
最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i 设dp[i]表示以i为结尾的最长递增子序列的长度,则状态转移方程为:dp[i] = max{dp[j]+1}, 1 这样简单的复杂度为O(n^2),其实还有更好的方法。 考虑两个数a[x]和a[y],x 按dp[t]=k来分类,只需保留dp[t]=k的原创 2014-12-20 19:30:34 · 513 阅读 · 0 评论 -
[编程题]洗牌
[编程题]洗牌洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左原创 2016-08-18 16:18:17 · 1341 阅读 · 0 评论 -
归并排序C++
#include using namespace std;int n; //定义数组长度全局变量void Merge(int *B, int low, int mid, int high){ int *D = (int *) malloc (n * sizeof(int)); //辅助数组D int i, j, k; for (int i = low; i <= mid; i+原创 2016-08-19 14:52:52 · 340 阅读 · 0 评论