动态规划算法解矩阵连乘问题的源代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includeiostream#includeconio.h#includetime.husingstd::cout;usingstd::endl;intmain(){intp[]={30,35,15,5,10,20,25};//p[0],p[1]确定A1行列数,p[1],p[2]确定A2行列数,依次类推intn=sizeof(p)/sizeof(int)-1;//自动计算矩阵个数,增加程序灵活性inti,j,k,r;long**m=newlong*[n+1];int**s=newint*[n+1];for(i=0;i=n;i++)m[i]=newlong[n+1];//m行列数n*n,下标都从1开始for(i=0;i=n;i++)s[i]=newint[n+1];//s行列数n*n,下标都从1开始for(i=0;i=n;i++)m[i][i]=s[i][i]=0;//矩阵初始化//给以下程序加上注解for(r=2;r=n;r++)/*数组相乘个数*/for(i=1;i=n-r+1;i++)/*n行里每行要求得的值的个数*/{j=i+r-1;/*相乘数组中最后数组的列指针*/m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];/*得到两个数组相乘的运算量*/s[i][j]=i;for(k=i+1;kj;k++)/*加括号方法得到的组数*/{longt=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];/*得到每组运算量*/if(tm[i][j]){m[i][j]=t;/*最小运算量*/s[i][j]=k;/*括号分割的位置*/}}}//输出矩阵m与s的上三角阵,结果应与图(b)、(c)一致,你的代码写在下面!//此处为你的输出矩阵m与s的上三角阵的代码!cout图(b)显示结果如下:endl;for(i=0;i=n;i++){if(i==0){cout\t;}else{couti\t;}}coutendl;for(i=1;i=n;i++){couti\t;for(intj=1;j=n;j++){if(m[i][j]=0){coutm[i][j]\t;}else{cout\t;}}coutendl;}cout图(c)显示结果如下:endl;for(i=0;i=n;i++){if(i==0){cout\t;}else{couti\t;}}coutendl;for(i=1;i=n;i++){couti\t;for(intj=1;j=n;j++){if(s[i][j]=0){couts[i][j]\t;}else{cout\t;}}coutendl;}return0;}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功