欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    动态规划算法实验报告Word格式.docx

    • 资源ID:17084482       资源大小:164.25KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    动态规划算法实验报告Word格式.docx

    1、i+)/上三角 int j=i+r-1; mij=mi+1j+pi-1*pi*pj; sij=i; for(int k=i+1;j; int t=mik+mk+1j+pi-1*pk*pj; if(tmij) mij=t; sij=k;void Traceback(int i,int j,int s4) if(i = j) coutw; int pw,sww;输入矩阵A1维数:p0p1; for(int i=2 ; ipi; if(pi-1 != m)endl#define N 100/str1存储字符串x,str2存储字符串ychar str1N,str2N;/lcs存储最长公共子序列char

    2、 lcsN;/cij存储str11.i与str21.j的最长公共子序列的长度int cNN;/flagij=0为str1i=str2j/flagij=1为ci-1j=sij-1/flagij=-1为ci-1j=cij-1) cij = ci-1j; flagij = 1; cij = cij-1; flagij = -1; return cmn;/求出最长公共子序列char* getLCS(char *x, char *y,int len,char *lcs) int i = strlen(x); int j = strlen(y); while(i&j) if(flagij=0) lcs-l

    3、en = xi-1; i-; j-; else if(flagij=1) return lcs; int i;请输入字符串x:str1;请输入字符串y:str2; int lcsLen = LCSLength(str1,str2);最长公共子序列长度:lcsLen char *p = getLCS(str1,str2,lcsLen,lcs);最长公共子序列为:lcsLen;lcsi0?aleft:0; int center = (left+right)/2; /最大子段和在左边 int leftsum=MaxSubSum(a,left,center); /最大子段和在右边 int rights

    4、um=MaxSubSum(a,center+1,right); /最大子段和在中间 int s1=0; int lefts=0; for(int i=center;i=left;i-) lefts+=ai; if(leftss1) s1=lefts; int s2=0; int rights=0; for(int i=center+1;=right; rights+=ai; if(rightss2) s2=rights; sum=s1+s2;/前后子段和相加 /判断最大子段和 if(sumleftsum)sum=leftsum;rightsum) sum=rightsum; return su

    5、m;int MaxSum(int *a,int n) return MaxSubSum(a,1,n-1); int a8=2,-3,-5,4,1,7,1,-5;最大子段和为:MaxSum(a,8);/动态规划法 int sum=0,b=0;n;i+)/此处不能=n, if(b0) b+=ai; else b=ai;sum) sum=b;4、凸多边形最优三角剖分cmath#define N 50struct point int x; int y;int distance(point X, point Y)/两点距离 int dis = (Y.x-X.x)*(Y.x-X.x) + (Y.y-X.y

    6、)*(Y.y-X.y); return (int)sqrt(dis);int w(point a, point b, point c)/权值 return distance(a,b) + distance(b,c) + distance(a,c);bool JudgeInput()/判断是否能构成凸多边形 point *v; /记录凸多边形各顶点坐标 int *total; /记录坐标在直线方程中的值 int m,a,b,c;请输入凸多边形顶点个数:m; int M = m-1; for(int i=0 ;m ;输入顶点v的坐标:vi.xvi.y; /根据顶点坐标判断是否能构成一个凸多边形 f

    7、or(int j=0 ; j j+) int p = 0; int q = 0; if(m-1 = j) a = vm-1.y - v0.y; b = vm-1.x - v0.y; c = b * vm-1.y - a * vm-1.x; a = vj.y - vj+1.y; b = vj.x - vj+1.x; c = b * vj.y - a * vj.x; for(int k=0 ; k 0) p = p+1; else if(totalk 0 & q0) | (p=0 & q=0)无法构成凸多边形!bool minWeightTriangulation()/计算最优值算法 int M;

    8、 int *t, *s; for(int i=1 ;=M ; tii = 0; for(int r=2 ; r r+)=M-r+1 ; int j = i+r-1; tij = ti+1j + w(vi-1,vi,vj); sij = i; for(int k=i+1 ;i+r-1 ; int u = tik + tk+1j + w(vi-1,vk,vj); if(u tij) tij = u; sij = k; return true;void Traceback(int i, int j, int *s) return;三角形:vi-1sij int *s; /记录最优三角剖分中所有三角形

    9、信息 int *t; /记录最优三角剖分所对应的权函数值 int M=0; t = new int *N; s = new int *N;N ; ti = new intN; si = new intN; v = new pointN; total = new intN; if(JudgeInput() if(minWeightTriangulation() Traceback(1,M,s);最优权值之和为:t1M运行结果:5、流水作业调度class Jobtype public: /* int operator=(Jobtype a)const return(key=a.key); */ i

    10、nt key; int index; bool job;void sort(Jobtype *d,int n) Jobtype temp; bool exchange; /交换标志 for(i = 0;i = i;j -) if(dj+1.key bi?bi:ai;/ 执行时间 di.job=ai=bi;/ 作业组 di.index=i;/作业序号 sort(d,n); int j=0; int k=n-1;i+)/最优调度 if(di.job) cj+=di.index; ck-=di.index; j=ac0; k=j+bc0; j+=aci; k=jdi.key; cout endl;

    11、int k=FlowShop(n,a,b,c);n调度时间:最优调度序列: for (int i = 0; i i+) / 输出最优调度序列 ci 6、0-1背包问题#include const int C=10;/容量const int N=5;/个数int max(const int a,const int b) return ab?a:b;int min(const int a,const int b) return a=w1) m1c=max(m1c,m2c-w1+v1);/找出最优解,0表示不能装,1表示能装void traceback(int *m,int n,int c,int

    12、*x,int *w) if(mic=mi+1c) xi=0; xi=1; c-=wi; xn=(mnc=0)?0: int *v=new intN+1; int *w=new intN+1; int *m=new int* N+1; int *x=new int N+1;N+1; mi=new intC+1;输入重量序列,N个=N;wi;输入价值序列,vi; knapsack(m,N,C,w,v); traceback(m,N,C,x,w);cout最优值:m1Cconst double MAX = numeric_limits:max(); /double的最大值/ai为结点i被访问的概率/

    13、bi为“虚结点”i被访问的概率/mij用来存放子树(i,j)的期望代价/wij用来存放子树(i,j)的所有结点(包括虚结点)的a,b概率之和/sij用来跟踪root的void OptimalBinarySearchTree(double *a,double *b,int n) int sNN; double mNN; double wNN; int i,j,l,r;=n+1; mii-1 = bi-1; wii-1 = bi-1; for(l=1; l l+)=n-l+1; j = l+i-1; mij = MAX; wij = wij-1 + aj +bj; for(r=i;=j; double k = mir-1 + wij + mr+1j; if(k mij = k;m1n; double aN,bN; int n; double sum = 0; int i,j,l; co


    注意事项

    本文(动态规划算法实验报告Word格式.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开