目录
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])