C语言经典的动态规划题目源程序和解释(c语言)动态规划定义等……越仔细分越高我只是初二的,像NOIP竞赛题,“采药”、“开心的金明”……

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 01:35:23

C语言经典的动态规划题目源程序和解释(c语言)动态规划定义等……越仔细分越高我只是初二的,像NOIP竞赛题,“采药”、“开心的金明”……
C语言
经典的动态规划题目
源程序和解释(c语言)
动态规划定义等……
越仔细分越高
我只是初二的,
像NOIP竞赛题,“采药”、“开心的金明”……

C语言经典的动态规划题目源程序和解释(c语言)动态规划定义等……越仔细分越高我只是初二的,像NOIP竞赛题,“采药”、“开心的金明”……
这是我们计算机系算法设计课的实验课程,下面是动态规划内容:
实验四:动态规划
实验目的:理解动态规划的基本思想,理解动态规划算法的两个基本要素最优子结构性质和子问题的重叠性质.熟练掌握典型的动态规划问题.掌握动态规划思想分析问题的一般方法,对较简单的问题能正确分析,设计出动态规划算法,并能快速编程实现.
实验内容:编程实现讲过的例题:最长公共子序列问题、矩阵连乘问题、凸多边形最优三角剖分问题、电路布线问题等.本实验中的问题,设计出算法并编程实现.
习题
1. 最长公共子序列
一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X=,则另一序列Z=是X的子序列是指存在一个严格递增的下标序列 ,使得对于所有j=1,2,…,k有
a) 最长公共子序列的结构
若用穷举搜索法,耗时太长,算法需要指数时间.
易证最长公共子序列问题也有最优子结构性质
设序列X=和Y=的一个最长公共子序列Z=,则:
i.若xm=yn,则zk=xm=yn且Zk-1是Xm-1和Yn-1的最长公共子序列;
ii.若xm≠yn且zk≠xm ,则Z是Xm-1和Y的最长公共子序列;
iii.若xm≠yn且zk≠yn ,则Z是X和Yn-1的最长公共子序列.
其中Xm-1=,Yn-1=,Zk-1=.
最长公共子序列问题具有最优子结构性质.
b) 子问题的递归结构
由最长公共子序列问题的最优子结构性质可知,要找出X=和Y=的最长公共子序列,可按以下方式递归地进行:当xm=yn时,找出Xm-1和Yn-1的最长公共子序列,然后在其尾部加上xm(=yn)即可得X和Y的一个最长公共子序列.当xm≠yn时,必须解两个子问题,即找出Xm-1和Y的一个最长公共子序列及X和Yn-1的一个最长公共子序列.这两个公共子序列中较长者即为X和Y的一个最长公共子序列.
由此递归结构容易看到最长公共子序列问题具有子问题重叠性质.例如,在计算X和Y的最长公共子序列时,可能要计算出X和Yn-1及Xm-1和Y的最长公共子序列.而这两个子问题都包含一个公共子问题,即计算Xm-1和Yn-1的最长公共子序列.
我们来建立子问题的最优值的递归关系.用c[i,j]记录序列Xi和Yj的最长公共子序列的长度.其中Xi=,Yj=.当i=0或j=0时,空序列是Xi和Yj的最长公共子序列,故c[i,j]=0.建立递归关系如下:
c) 计算最优值
由于在所考虑的子问题空间中,总共只有θ(m*n)个不同的子问题,因此,用动态规划算法自底向上地计算最优值能提高算法的效率.
计算最长公共子序列长度的动态规划算法LCS_LENGTH(X,Y)以序列X=和Y=作为输入.输出两个数组c[0..m ,0..n]和b[1..m ,1..n].其中c[i,j]存储Xi与Yj的最长公共子序列的长度,b[i,j]记录指示c[i,j]的值是由哪一个子问题的解达到的,这在构造最长公共子序列时要用到.最后,X和Y的最长公共子序列的长度记录于c[m,n]中.
程序如下:
#include
#include
int lcs_length(char x[],char y[]);
int main()
{
char x[100],y[100];
int len;
while(1)
{
scanf("%s%s",x,y);
if(x[0]=='0') //约定第一个字符串以‘0’开始表示结束
break;
len=lcs_length(x,y);
printf("%d\n",len);
}
}
int lcs_length(char x[],char y[] )
{
int m,n,i,j,l[100][100];
m=strlen(x);
n=strlen(y);
for(i=0;i

C语言经典的动态规划题目源程序和解释(c语言)动态规划定义等……越仔细分越高我只是初二的,像NOIP竞赛题,“采药”、“开心的金明”…… 数据结构C语言括号的检验源程序 动态规划经典题目想寻求动态规划的经典题目!比如.如果能附带题解,那就更完美拉~^-^ 关于C语言,正确的说法是:A.C语言采用解释方式 B.C语言是汇编语言 C.C语言采用编译方式 D.C语言源程序 编程语言中的五大经典算法的异同点!分治策略、动态规划、贪心算法、回溯法和分支限界法这些算法之间的异同点! C语言:输入两个分数,计算它们的和.用a/b+c/d=x/y的形式.源程序 求动态规划经典题目不超过初中NOIP大纲的有代表性的题目多种类型的最好都有了 C语言题目,求解释 地理信息系统GIS应用于土地利用规划编制工作中的作用不包括()A规划的定量化和科学化B计算更为精准C评价过程和规划过程的可视化D动态规划功能 C语言题目·求解释 计算机C语言练习题目求解释. C语言题目 求详细解释 求解多目标规划问题的Pareto多目标遗传算法的程序,C语言的就可以.悬赏分:200和题目一样,给个C语言写的程序的例子就可以了.拜托了大哥大姐们. 关于运筹学动态规划的问题动态规划是和穷举法差不多么? 将组成整数的每个数字重新排列成一个最大和最小的数的C语言源程序责怎么写 c语言,输入n,打印底和高均为n的等腰空心梯形要全部的,不要光给源程序, 请用动态规划的方法求出以下问题,用C++语言已知三个函数A,B,C值如下表所示.自变量取值为0-10的整数.请用动态规划的方法求出一组x,y,z.使得A(x)+B(y)+C(z)为最大,并且满足x*x+y*y+z*z C语言题目2题1,给出一个字符串,在有数字的地方加上M.样例:输入:10There are 10 apples.输出:There are 20 apples.2,(动态规划题)在N人中,一些崇拜甲,另一些崇拜乙,将N人排成一列把他们分入几个房间