python矩阵连乘(动态规划)

时间:2023-05-11 09:44:39
【文件属性】:

文件名称:python矩阵连乘(动态规划)

文件大小:826B

文件格式:PY

更新时间:2023-05-11 09:44:39

python

【问题描述】使用动态规划算法解矩阵连乘问题,具体来说就是,依据其递归式自底向上的方式进行计算,在计算过程中,保存已子问题答案,每个子问题只解决一次,在后面计算需要时只要简单查一下得到其结果,从而避免大量的重复计算,最终得到多项式时间的算法。 【输入形式】在屏幕上输入第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,各数间都以一个空格分隔。 【输出形式】矩阵m,其中m(i,j)中存放的是:计算A[i:j](其中1<=i<=j<=n)所需的最少数乘次数。 矩阵s,其中s[i][j]记录了断开的位置,即最优的加括号方式应为(A[i:s[i][j]])*(A[s[i][j]+1:j])。 矩阵连乘A1...An的最优计算次序。 【样例1输入】 30 35 15 5 10 20 25 【样例1输出】 [[ 0 15750 7875 9375 11875 15125] [ 0 0 2625 4375 7125 10500] [ 0 0 0 750 2500 5375] [ 0 0 0 0 1000 3500] [ 0 0 0 0 0 5000] [ 0 0 0 0 0 0]] [[0 1 1 3 3 3] [0 0 2 3 3 3] [0 0 0 3 3 3] [0 0 0 0 4 5] [0 0 0 0 0 5] [0 0 0 0 0 0]] ((A1(A2A3))((A4A5)A6)) 【样例说明】 输入:第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,以空格分隔。 输出:矩阵m,s,和矩阵连乘的最优计算次序。


网友评论