我一直在嘗試幾天來實現一個簡單的程序從Matlab代碼到Python。我正在使用numpy,但是如果有更好的方式,我會接受它。在Python中的動態編程
這是我的Matlab代碼:
x=[1,1,1,9];
A=zeros(length(x),length(x));
for i=length(x):-1:1
for j=length(x):-1:i
if i==length(x)
A(i,j)=x(i);
else
if j>i
A(i,j)=A(i+1,j)+(j-i);
elseif j==i
A(i,j)=x(i)+min(A(j+1,j+1:end));
end
end
end
end
y=min(A(1,:));
它創建該矩陣:
12 12 13 15
0 11 11 12
0 0 10 10
0 0 0 9
和最後的結果是12(最小從第一行)。 這是我在Python這樣做的遠:
import numpy as np
items = np.array([1,1,1,9])
sizeLimit = len(items)
P = np.zeros((len(items),len(items)))
for i in range(0, sizeLimit):
for j in range(i, sizeLimit):
if i == sizeLimit-1:
P[i,j] = items[i]
else:
if j > i:
P[i,j] = P[i+1,j] + [j-i]
elif j == i:
P[i,j] = items[i] + P[0, 0:].min()
print P
好像它被卡住的地方,不重複。
我會感謝任何幫助。
很難理解你的代碼。你能解釋這是什麼意圖嗎?我的意思是,你想在矩陣中得到什麼樣的模式? – Christian