算法学习
文章平均质量分 75
梦想着
这个作者很懒,什么都没留下…
展开
-
动态规划 矩阵链乘法
Description给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 Input有N个矩阵连乘,用一行有n+1个数数组表示,表示是n个矩阵的行及第n个矩阵的列,它们之间用空格隔开. Output你的输出应该有C行,即每组测试数据的输出占一行,它是计算出的矩阵最少连乘积次数,输出最优全括号结构Sample Input10 100 5 50Sample Output7500((A1A2)原创 2010-12-05 13:45:00 · 15344 阅读 · 5 评论 -
二叉树的递归算法
很多数据结构的书中,都会详细的谈论很多数据结构,比如,线形表,树,图...而实际项目中,最常用的莫过于数组和链表,以及树(最多的还是二叉树),但是这些代码中多以伪代码居多,并且代码不完整,缺少注释。最近对数据结构复习了一阵,对二叉树做一个小结,以下是二叉树的递归代码。#include #include #include typedef struct BinaryTree{int key;struct BinaryTree *left;struct BinaryTree *right;}Node;Node *原创 2010-11-19 21:55:00 · 1280 阅读 · 1 评论 -
二叉树的非递归算法总结
二叉树的非递归算法,采用栈实现,本文给出了从设置栈到利用栈的完整代码,其中二叉树的后序遍历需要采用标志位,这样才可以有序的变非线性的结构为线性结构,二叉树生成的过程没有考虑平衡性的影响。期待下一步实现平衡二叉树遍历的实例。#include #include #include #define maxsize 30typedef struct BinaryTree{int key;struct BinaryTree *left;struct BinaryTree *right;}Node,*node;原创 2010-11-19 21:59:00 · 738 阅读 · 0 评论 -
动态规划:最长上升子序列
<br /> <br />问题描述<br />一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).<br原创 2010-11-22 15:14:00 · 42804 阅读 · 5 评论 -
一些重要的算法
<br /> <br />酷壳: http://CoolShell.cn/ <br />原文: http://coolshell.cn/?p=2583 <br />下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)A*搜寻算法<b转载 2010-11-22 15:16:00 · 1255 阅读 · 0 评论 -
01背包问题(动态规划DP)
<br />#include<iostream>using namespace std;int c[10][100];/*行代表是覆盖的背包个数,而列代表背包容量*/int Knapsack(int n,int m){ int i,j; int w[10],v[10];/*分别代表各个物品的重量和价值*/ for(i=1;i<=n;i++) scanf("%d%d",&w[i],&v[i]);/*输入每个物品的重量W和价值V*/ for(i=0;i<10;i++)/*初转载 2010-11-26 18:15:00 · 1548 阅读 · 0 评论 -
动态规划:最长公共子序列
问题描述我们称序列Z = 是序列X = 的子序列当且仅当存在严格上升的序列,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = 是X = 的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找到一个最长的序列Z,使得Z既是X的子序列也是Y的子序列。输入数据输入包括多组测试数据。每组数据包括一行,给出两个长度不超过200的字符串,原创 2010-11-22 19:06:00 · 6919 阅读 · 2 评论