摘要:
在动态规划问题中,我们经常会遇到以下问题,最优解倒是求出来了,但是最优解的路径呢?如何输出?这确实是一个问题,而且往往比较难哟。。我这里说的路径是指,像在钢条切割问题中,从哪些地方切可以达到最优化,在矩阵链乘问题中,从哪些地方进行组合可以使效率最高?在钢条切割问题中:for(j=1;jprice){ pathStore[i]=j; //意思为使是长度为i的钢条价格达到最优,需要从第j个位置进... 阅读全文
摘要:
矩阵链乘的优化问题产生的原因: 如图,对于矩阵的链乘时,我们可以采用不同的组合进行相乘当然不同的组合会产生不同的效率。不同的组合所产生的效率如下:上面表达式的意思是,对于一个从Ai乘到Aj的矩阵链乘运算,我们可以将问题进行划分为两个子问题如下:从Ai 乘到Ak的效率代价加上Ak+1到Aj的代价,再加上(呵呵,最要的问题)它们两者的结果相乘的代价。代码如下: #includ... 阅读全文
摘要:
最大公共子序列问题:就是两个字符串相似的最大子符长度!!!。这个问题关键还是在于把子问题与原问题的桥梁求出来:如上式中,当xi =yj 于是就有否则:于是结合以上两种情况便可得出代码:#ifndef MAX_LENGTHCOMMSUBSTR_H#define MAX_LENGTHCOMMSUBSTR_H#define max(a,b) a>b? a:bint maxLengthComSubSTR(... 阅读全文
摘要:
#ifndef LONG_PATH_H#define LONG_PATH_H#include#include#define MAX 65535int graphPath_longest(int (*Graph)[5],int Length,int origin,int destin ); void printf_path(int origin,int destin); #endif #i... 阅读全文
摘要:
#ifndef PALINDROME_H_#define PALINDROME_H_#include#includeint palindrome_longest(char *str,int front,int back); #endif #include"Palindrome.h"#define Max(a,b) a>b? a:b int palindrome_longest(char *str,... 阅读全文
摘要:
对于最优化的子数组问题,一名话,就是从给你的数组中寻找一个子数组,使得它的和是最优的(最大/最小)假如求最大子数组: 如果数组中元素全是正的,那么好办,整个数组的和就是了。 如果数组中元素全是负的,那么也好办,找最小的那个。 但是如果正负相间呢???如上图中,如何求出那个最大的子数组呢?显然我们可以穷举,但是... 阅读全文
摘要:
硬币找零&&爬楼梯&&猴子摘香蕉 假设有几种硬币,如1、3、5,并且数量无限。请找出能够组成某个数目的找零所使用最少的硬币数。 #include"CoinProblem.h"#includeint countNum=MAX;void CoinProblem(int *coin,int Length,int Value,int count){ if(Value==0){ if(countNum>c... 阅读全文
摘要:
装配线问题: 韩鸡鸡一直强调的装配线问题其实很简单,也算是动态规划里面比较简单的问题了。在上面的图中,我们可以看到也就是一个车间有两条装配线,每一个相对位置的功能是相同的。。如图中a11和a21,它们的功能是相同的,都是装配一个零件,但是它们所需的时间却不相同。而且不同装配线间的移动是要花时间的。但是在同一条装配线上移动是不需要花时间的,当然了,我们只能从左往右依次装配零件。那么问题来了,怎... 阅读全文
摘要:
来自为知笔记(Wiz)附件列表 阅读全文
摘要:
虚拟存储器 虚拟存储器是一个抽象概念,它为进程提供了一种假象,每一个进程都象独占了占主存一样。 每个进程看到的是一致的存储器,称为虚拟地址空间。 程序代码和数据: 对于所有进程来说,代码是从同一固定地址开始,紧接着是和C全局变量相对应的数据位置。堆: 运行时堆,可以收缩和扩张,如在使用malloc 和free时。栈: 编译器用它来实现函数调用 来自为知笔记(Wiz... 阅读全文