习要学的,博客是要写的,怪兽是要慢慢打的。
m=[[0,0,0,0,0],#储存计算最优值 [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0] ] s=[[0,0,0,0,0],#储存最佳分开位置 [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0] ] p=[2,3,4,5,6] r=2 n=4 while(r<=n):#按列循环 i=1 while(i<=(n-r+1)):#按行循环 j=i+(r-1) m[i][j]=m[i][i]+m[i+1][j]+p[i-1]*p[i]*p[j] s[i][j]=i k=i+1 while(k<j):#行内找出最优解,并存入mzho t= m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j] if t<m[i][j] : m[i][j]=t s[i][j]=k k+=1 i+=1 r+=1 row=0 while (row<=4): print(s[row]) row+=1 row=0 while (row<=4): print(m[row]) row+=1 def traceback(i,j): if i==j: return traceback(i,s[i][j]) traceback(s[i][j]+1,j) print("A %d, %d * A%d, %d" %(i,s[i][j],s[i][j]+1,j)) traceback(1,4)
文章来源: 动态规划 矩阵连乘问题 python