貿易航線
0貿易航線 - 藍橋云課 (lanqiao.cn)
n,m,k=map(int ,input().split())
#貪心的想,如果買某個東西利潤最大,那我肯定直接拉滿啊,所以買k個和買一個沒區別
p=[0]
for i in range(n):p.append([-1]+list(map(int,input().split())))dp=[[float("-inf")for i in range(m+1)] for i in range(n+1)]
dp[0][0]=0
for i in range(1,n+1):dp[i][0]=max(dp[i][0],dp[i-1][0]) #到i點沒有物品可以是在上一個地點本來就沒有物品for j in range(1,m+1):dp[i][j]=dp[i-1][j] #到i點有j物品可以是在上一個地點本來就有j物品if p[i][j]!=-1: #i點j物品可以交易dp[i][0]=max(dp[i][0],dp[i-1][j]+p[i][j]) #到i點沒有物品可以是在上一個地點有j物品,在i點賣掉for j in range(1, m + 1): #注意,因為下邊的dp[i][j]需要用dp[i][0]的最大值更新,所以需要等dp[i][0]更新完才能更新dp[i][j]if p[i][j] != -1:dp[i][j]=max(dp[i][j],dp[i][0]-p[i][j]) #到i點有j物品可以是在i點沒有物品,然后在i點購買j物品print(dp[-1][0]*k)