uva 348 Optimal Array Multiplication Sequence
来源:互联网 发布:修改网络摄像头ip地址 编辑:程序博客网 时间:2024/05/01 11:30
题意:给你n个矩阵,要你计算矩阵乘的最少运算量。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=12;struct node{ int x,y;}m[N];int map[N][N],ileft[N],iright[N];int dp(int,int);void find_ans(int,int);int main(){ int n,t_cnt=0; while(scanf("%d",&n)!=EOF) { if(n==0) break; memset(map,0,sizeof(map)); memset(ileft,0,sizeof(ileft)); memset(iright,0,sizeof(iright)); ileft[0]++;iright[n-1]++; for(int i=0;i<n;i++) scanf("%d%d",&m[i].x,&m[i].y); printf("Case %d: ",++t_cnt); int ans=dp(0,n-1); find_ans(0,n-1); for(int i=0;i<n;i++) { if(i!=0) printf(" x "); while(ileft[i]--) printf("("); printf("A%d",i+1); while(iright[i]--) printf(")"); } //printf("ans=%d\n",ans); puts(""); } return 0;}int dp(int be,int end){ if(map[be][end]!=0) return map[be][end]; else if(end-be==1) {map[be][end]=m[be].x*m[end].y*m[end].x;return map[be][end];} else if(end==be) return 0; else { int imin=1<<30; for(int i=be;i<end;i++) { imin=min(imin,dp(be,i)+dp(i+1,end)+m[be].x*m[end].y*m[i+1].x); } map[be][end]=imin; return imin; }}void find_ans(int be,int end){ if(be==end||be+1==end) return; else { int imin=1<<30,pos; for(int i=be;i<end;i++) { int temp=map[be][i]+map[i+1][end]+m[be].x*m[end].y*m[i+1].x; if(imin>temp) { imin=temp; pos=i; } } if(pos!=be) {ileft[be]++;iright[pos]++;} if(pos+1!=end) {ileft[pos+1]++;iright[end]++;} find_ans(be,pos);find_ans(pos+1,end); }}
- 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
- uva 348 Optimal Array Multiplication Sequence
- uva 348 Optimal Array Multiplication Sequence
- IBM LAS SYSTEM( 1 )——架构及权限
- 北京地铁线路图
- String Interning研究
- Informatioa - Source Qualifier Customer Query
- 窗口改为苹果绿色
- uva 348 Optimal Array Multiplication Sequence
- 由上位机发送1给单片机时,蜂鸣器以400ms频率发声 明天再调郁闷
- 关于简单控件的运用
- 理财基本知识
- 清理系统垃圾.cmd
- 删除系统前请注意事项
- 常见开源加密算法库
- 信纸
- 01-K Code ZOJ