348 - Optimal Array Multiplication Sequence
来源:互联网 发布:我打打单软件 编辑:程序博客网 时间:2024/05/01 15:52
/*典型动态规划题型,一次AC题意:矩阵相乘,要求输出运算次数最少的运算式思路:以第k个乘号为一个状态,状态方程:d(x1,x2)={max(d(x1,k)+d(k+1,x2)+x1*k*x2)|k属于[x1,x2)}使用数组ans[x1][x2]存储相应的k值,最后使用递归输出!*/#include <cstdio>#include <cstring>const int nMax=15;long long d[nMax][nMax];int A[nMax][2];int ans[nMax][nMax];int N;int dp(int x1,int x2){long long &temp=d[x1][x2];if(temp!=-1) return temp;//temp=0;for(int k=x1;k<x2;k++){if(temp==-1){ans[x1][x2]=k;temp=dp(x1,k)+dp(k+1,x2)+A[x1][0]*A[k][1]*A[x2][1];}else if(dp(x1,k)+dp(k+1,x2)+A[x1][0]*A[k][1]*A[x2][1]<temp){ans[x1][x2]=k;temp=dp(x1,k)+dp(k+1,x2)+A[x1][0]*A[k][1]*A[x2][1];}}return temp;}void print(int x1,int x2){if(x1==x2) {printf("A%d",x1+1);return;}printf("(");print(x1,ans[x1][x2]);printf(" x ");print(ans[x1][x2]+1,x2);printf(")");}int main(){//freopen("f://data.in","r",stdin);int cas=1;while(scanf("%d",&N) && N){for(int i=0;i<N;i++){scanf("%d%d",&A[i][0],&A[i][1]);}memset(d,-1,sizeof(d));dp(0,N-1);printf("Case %d: ",cas++);print(0,N-1);printf("\n");}return 0;}
- 348 - Optimal Array Multiplication Sequence
- 348 - Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- uva:348 - Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- UVA 348 Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- uva 348 - Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- UVa 348 - Optimal Array Multiplication Sequence
- Uva-348-Optimal Array Multiplication Sequence
- UVa 348: Optimal Array Multiplication Sequence
- UVa:348 Optimal Array Multiplication Sequence
- UVA - 348 Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence (DP)
- uva 348 - Optimal Array Multiplication Sequence
- UVa 348 Optimal Array Multiplication Sequence(dp)
- UVa 348 - Optimal Array Multiplication Sequence
- Nginx目录设置访问验证
- Spring+Hibernate配置多数据源
- 【Matlab】数据降维工具箱drtoolbox
- INF SourceDisksNames Section 和 SourceDisksFiles Section详解
- Linux 学习笔记
- 348 - Optimal Array Multiplication Sequence
- http发送get请求的总结
- ScrollView或者ListView中嵌套ViewPager,展示不出来问题。
- cvSVD(&A, &U, &S, &V, CV_SVD_U_T);
- 分享一个java写的简单计算器
- SSH 配置
- 把某某XX文件夹的下得文件拷贝到任意磁盘目录下
- linux下字符串和整型互转
- VMware 安装 ubuntu