Python矩阵连乘最优解与最优值

目录

Require

Outcome

Code


Require

 求最优值和最优解

Outcome

30 35 15 5 10 20 25
请输入矩阵的数量,即An的n:6

---------------新的一轮---------------
i: 1     j= i + r - 1: 2
old:

[[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 0 0 0 0 0]
 [0 0 0 0 0 0]]
new:

[[    0 15750     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     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 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]
15750     i赋过来的值: 1
[[0 1 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 0 0 0]
 [0 0 0 0 0 0]]

---------------新的一轮---------------
i: 2     j= i + r - 1: 3
old:

[[    0 15750     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     0     0     0]
 [    0     0     0     0     0     0]]
new:

[[    0 15750     0     0     0     0]
 [    0     0  2625     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     0     0]]
[[0 1 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 0 0 0]
 [0 0 0 0 0 0]]
2625     i赋过来的值: 2
[[0 1 0 0 0 0]
 [0 0 2 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 0 0]]

---------------新的一轮---------------
i: 3     j= i + r - 1: 4
old:

[[    0 15750     0     0     0     0]
 [    0     0  2625     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     0     0]]
new:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]]
[[0 1 0 0 0 0]
 [0 0 2 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 0 0]]
750     i赋过来的值: 3
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]

---------------新的一轮---------------
i: 4     j= i + r - 1: 5
old:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]]
new:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]]
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]
1000     i赋过来的值: 4
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]

---------------新的一轮---------------
i: 5     j= i + r - 1: 6
old:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0     0]
 [    0     0     0     0     0     0]]
new:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]
5000     i赋过来的值: 5
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

---------------新的一轮---------------
i: 1     j= i + r - 1: 3
old:

[[    0 15750     0     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 0 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
7875     i赋过来的值: 1
[[0 1 1 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 2
AllZeroMatrix[i-1][k-1]: 15750    位置:(0,1)
AllZeroMatrix[k][j-1]: 0    位置:(2,2)
原来的值OriginalValue: 7875
   更小值SmallerValue: 18000
比原来的数大,不予替换

---------------新的一轮---------------
i: 2     j= i + r - 1: 4
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625     0     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  6000     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 0 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
6000     i赋过来的值: 2
[[0 1 1 0 0 0]
 [0 0 2 2 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 3
AllZeroMatrix[i-1][k-1]: 2625    位置:(1,2)
AllZeroMatrix[k][j-1]: 0    位置:(3,3)
原来的值OriginalValue: 6000
   更小值SmallerValue: 4375
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  6000     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 2 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 4375     CountZeroMatrix位置(1,3)已更换为: 3    这个数可以理解为已计算的次数
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


---------------新的一轮---------------
i: 3     j= i + r - 1: 5
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750     0     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 0 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
2500     i赋过来的值: 3
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 4
AllZeroMatrix[i-1][k-1]: 750    位置:(2,3)
AllZeroMatrix[k][j-1]: 0    位置:(4,4)
原来的值OriginalValue: 2500
   更小值SmallerValue: 3750
比原来的数大,不予替换

---------------新的一轮---------------
i: 4     j= i + r - 1: 6
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000     0]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  6250]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 0]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
6250     i赋过来的值: 4
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 4]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 5
AllZeroMatrix[i-1][k-1]: 1000    位置:(3,4)
AllZeroMatrix[k][j-1]: 0    位置:(5,5)
原来的值OriginalValue: 6250
   更小值SmallerValue: 3500
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  6250]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 4]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 3500     CountZeroMatrix位置(3,5)已更换为: 5    这个数可以理解为已计算的次数
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


---------------新的一轮---------------
i: 1     j= i + r - 1: 4
old:

[[    0 15750  7875     0     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875 14875     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 0 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
14875     i赋过来的值: 1
[[0 1 1 1 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 2
AllZeroMatrix[i-1][k-1]: 15750    位置:(0,1)
AllZeroMatrix[k][j-1]: 750    位置:(2,3)
原来的值OriginalValue: 14875
   更小值SmallerValue: 21000
比原来的数大,不予替换

此时的k为: 3
AllZeroMatrix[i-1][k-1]: 7875    位置:(0,2)
AllZeroMatrix[k][j-1]: 0    位置:(3,3)
原来的值OriginalValue: 14875
   更小值SmallerValue: 9375
old:

[[    0 15750  7875 14875     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 1 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 9375     CountZeroMatrix位置(0,3)已更换为: 3    这个数可以理解为已计算的次数
[[0 1 1 3 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


---------------新的一轮---------------
i: 2     j= i + r - 1: 5
old:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375     0     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375 13000     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 3 0 0]
 [0 0 2 3 0 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
13000     i赋过来的值: 2
[[0 1 1 3 0 0]
 [0 0 2 3 2 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 3
AllZeroMatrix[i-1][k-1]: 2625    位置:(1,2)
AllZeroMatrix[k][j-1]: 1000    位置:(3,4)
原来的值OriginalValue: 13000
   更小值SmallerValue: 7125
old:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375 13000     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
[[0 1 1 3 0 0]
 [0 0 2 3 2 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 7125     CountZeroMatrix位置(1,4)已更换为: 3    这个数可以理解为已计算的次数
[[0 1 1 3 0 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


此时的k为: 4
AllZeroMatrix[i-1][k-1]: 4375    位置:(1,3)
AllZeroMatrix[k][j-1]: 0    位置:(4,4)
原来的值OriginalValue: 7125
   更小值SmallerValue: 11375
比原来的数大,不予替换

---------------新的一轮---------------
i: 3     j= i + r - 1: 6
old:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500     0]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375  7125     0]
 [    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 0 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 0]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
5375     i赋过来的值: 3
[[0 1 1 3 0 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 4
AllZeroMatrix[i-1][k-1]: 750    位置:(2,3)
AllZeroMatrix[k][j-1]: 5000    位置:(4,5)
原来的值OriginalValue: 5375
   更小值SmallerValue: 9500
比原来的数大,不予替换

此时的k为: 5
AllZeroMatrix[i-1][k-1]: 2500    位置:(2,4)
AllZeroMatrix[k][j-1]: 0    位置:(5,5)
原来的值OriginalValue: 5375
   更小值SmallerValue: 10000
比原来的数大,不予替换

---------------新的一轮---------------
i: 1     j= i + r - 1: 5
old:

[[    0 15750  7875  9375     0     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500  5375]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375 28125     0]
 [    0     0  2625  4375  7125     0]
 [    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 0 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
28125     i赋过来的值: 1
[[0 1 1 3 1 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 2
AllZeroMatrix[i-1][k-1]: 15750    位置:(0,1)
AllZeroMatrix[k][j-1]: 2500    位置:(2,4)
原来的值OriginalValue: 28125
   更小值SmallerValue: 27250
old:

[[    0 15750  7875  9375 28125     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500  5375]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375 27250     0]
 [    0     0  2625  4375  7125     0]
 [    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 1 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 27250     CountZeroMatrix位置(0,4)已更换为: 2    这个数可以理解为已计算的次数
[[0 1 1 3 2 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


此时的k为: 3
AllZeroMatrix[i-1][k-1]: 7875    位置:(0,2)
AllZeroMatrix[k][j-1]: 1000    位置:(3,4)
原来的值OriginalValue: 27250
   更小值SmallerValue: 11875
old:

[[    0 15750  7875  9375 27250     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500  5375]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375 11875     0]
 [    0     0  2625  4375  7125     0]
 [    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 2 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 11875     CountZeroMatrix位置(0,4)已更换为: 3    这个数可以理解为已计算的次数
[[0 1 1 3 3 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]


此时的k为: 4
AllZeroMatrix[i-1][k-1]: 9375    位置:(0,3)
AllZeroMatrix[k][j-1]: 0    位置:(4,4)
原来的值OriginalValue: 11875
   更小值SmallerValue: 15375
比原来的数大,不予替换

---------------新的一轮---------------
i: 2     j= i + r - 1: 6
old:

[[    0 15750  7875  9375 11875     0]
 [    0     0  2625  4375  7125     0]
 [    0     0     0   750  2500  5375]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375 11875     0]
 [    0     0  2625  4375  7125 18500]
 [    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 0]
 [0 0 2 3 3 0]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
18500     i赋过来的值: 2
[[0 1 1 3 3 0]
 [0 0 2 3 3 2]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]

此时的k为: 3
AllZeroMatrix[i-1][k-1]: 2625    位置:(1,2)
AllZeroMatrix[k][j-1]: 3500    位置:(3,5)
原来的值OriginalValue: 18500
   更小值SmallerValue: 10500
old:

[[    0 15750  7875  9375 11875     0]
 [    0     0  2625  4375  7125 18500]
 [    0     0     0   750  2500  5375]
 [    0     0     0     0  1000  3500]
 [    0     0     0     0     0  5000]
 [    0     0     0     0     0     0]]
new:

[[    0 15750  7875  9375 11875     0]
 [    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 0]
 [0 0 2 3 3 2]
 [0 0 0 3 3 3]
 [0 0 0 0 4 5]
 [0 0 0 0 0 5]
 [0 0 0 0 0 0]]
--- 10500     CountZeroMatrix位置(1,5)已更换为: 3    这个数可以理解为已计算的次数
[[0 1 1 3 3 0]
 [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]]


此时的k为: 4
AllZeroMatrix[i-1][k-1]: 4375    位置:(1,3)
AllZeroMatrix[k][j-1]: 5000    位置:(4,5)
原来的值OriginalValue: 10500
   更小值SmallerValue: 18125
比原来的数大,不予替换

此时的k为: 5
AllZeroMatrix[i-1][k-1]: 7125    位置:(1,4)
AllZeroMatrix[k][j-1]: 0    位置:(5,5)
原来的值OriginalValue: 10500
   更小值SmallerValue: 24625
比原来的数大,不予替换

---------------新的一轮---------------
i: 1     j= i + r - 1: 6
old:

[[    0 15750  7875  9375 11875     0]
 [    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]]
new:

[[    0 15750  7875  9375 11875 36750]
 [    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 0]
 [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]]
36750     i赋过来的值: 1
[[0 1 1 3 3 1]
 [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]]

此时的k为: 2
AllZeroMatrix[i-1][k-1]: 15750    位置:(0,1)
AllZeroMatrix[k][j-1]: 5375    位置:(2,5)
原来的值OriginalValue: 36750
   更小值SmallerValue: 32375
old:

[[    0 15750  7875  9375 11875 36750]
 [    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]]
new:

[[    0 15750  7875  9375 11875 32375]
 [    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 1]
 [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]]
--- 32375     CountZeroMatrix位置(0,5)已更换为: 2    这个数可以理解为已计算的次数
[[0 1 1 3 3 2]
 [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]]


此时的k为: 3
AllZeroMatrix[i-1][k-1]: 7875    位置:(0,2)
AllZeroMatrix[k][j-1]: 3500    位置:(3,5)
原来的值OriginalValue: 32375
   更小值SmallerValue: 15125
old:

[[    0 15750  7875  9375 11875 32375]
 [    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]]
new:

[[    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 2]
 [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]]
--- 15125     CountZeroMatrix位置(0,5)已更换为: 3    这个数可以理解为已计算的次数
[[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]]


此时的k为: 4
AllZeroMatrix[i-1][k-1]: 9375    位置:(0,3)
AllZeroMatrix[k][j-1]: 5000    位置:(4,5)
原来的值OriginalValue: 15125
   更小值SmallerValue: 21875
比原来的数大,不予替换

此时的k为: 5
AllZeroMatrix[i-1][k-1]: 11875    位置:(0,4)
AllZeroMatrix[k][j-1]: 0    位置:(5,5)
原来的值OriginalValue: 15125
   更小值SmallerValue: 26875
比原来的数大,不予替换
[[    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]]
OptimalSolution最优解:
((A( 1 ) (A( 2 ) A( 3 ) ) ) ((A( 4 ) A( 5 ) ) A( 6 ) ) ) 
OptimalValue最优值: 15125
>>> 

Code

import numpy as np
print(30, 35, 15, 5, 10, 20, 25)
n=int(input("请输入矩阵的数量,即An的n:"))+1
p = [30, 35, 15, 5, 10, 20, 25]
MatrixInput = np.full((1, 0), 0)  # 输入的矩阵


AllZeroMatrix = np.full((n-1, n-1), 0)  # 全零矩阵  (n行,n列 ,填充数)
CountZeroMatrix= np.full((n-1, n-1), 0)  # 全零矩阵  (n行,n列 ,填充数)

def Totalize(n):
    for r in range(2, n + 1):
        for i in range(1, n - r + 2):
            print("\n---------------新的一轮---------------")
            print("i:",i,end="     ")
            j = i + r - 1
            print("j= i + r - 1:",j)
            print("old:\n")
            print(AllZeroMatrix)
            AllZeroMatrix[i-1][j-1] = AllZeroMatrix[i][j-1] + p[i - 1] * p[i] * p[j]
            print("new:\n")
            print(AllZeroMatrix)
            print(CountZeroMatrix)
            CountZeroMatrix[i-1][j-1] = i
            print(AllZeroMatrix[i-1][j-1],end="     ")
            print("i赋过来的值:",CountZeroMatrix[i-1][j-1])
            print(CountZeroMatrix)

            
            for k in range(i + 1, j):   #上面循环完成一个轮回后进入本循环,开始寻找更小值SmallerValue
                print("\n此时的k为:",k)
                print("AllZeroMatrix[i-1][k-1]:",AllZeroMatrix[i-1][k-1],end="    ")
                print("位置:({},{})".format(i-1,k-1))
                print("AllZeroMatrix[k][j-1]:",AllZeroMatrix[k][j-1],end="    ")
                print("位置:({},{})".format(k,j-1))
                SmallerValue = AllZeroMatrix[i-1][k-1] + AllZeroMatrix[k][j-1] + p[i - 1] * p[k] * p[j]
                print("原来的值OriginalValue:",AllZeroMatrix[i-1][j-1])
                print("   更小值SmallerValue:",SmallerValue)
                if SmallerValue < AllZeroMatrix[i-1][j-1]:
                    print("old:\n")
                    print(AllZeroMatrix)
                    AllZeroMatrix[i-1][j-1] = SmallerValue
                    print("new:\n")
                    print(AllZeroMatrix)
                    print(CountZeroMatrix)
                    CountZeroMatrix[i-1][j-1] = k
                    print("---",AllZeroMatrix[i-1][j-1],end="     ")
                    print("CountZeroMatrix位置({},{})已更换为:".format(i-1,j-1),end=" ")
                    print(CountZeroMatrix[i-1][j-1],end="    ")
                    print("这个数可以理解为已计算的次数")
                    print(CountZeroMatrix,end="\n\n")
                else:
                    print("比原来的数大,不予替换")


def Order(i, j):
    if i == j:
        print('A(', i, ') ',end='')
        return
    
    print('(', end='')
    Order(i, CountZeroMatrix[i-1][j-1])
    Order(CountZeroMatrix[i-1][j-1] + 1, j)  
    print(') ',end='')


Totalize(n - 1)
print(AllZeroMatrix)
print(CountZeroMatrix)
print("OptimalSolution最优解:")           #最优解
Order(1, n - 1)

print("\nOptimalValue最优值:",end=" ")    #最优值
print(AllZeroMatrix[0][n-2])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值