2020阿里笔试 3月25号
#阿里笔试2020#
第二题时间不够了,考试结束10分钟才搞出来
#阿里笔试2020##阿里巴巴##笔试题目#
第一题AC
动态规划 dp[i][j]表示在以arr[i][j]为结尾情况下的最小邻差绝对值求和结果
n = int(input().strip()) arr = [[0]*n for _ in range(3)] for i in range(3): arr[i] = list(map(int, input().split())) dp = [[0]*n for _ in range(3)] dp[0][0], dp[1][0], dp[2][0] = 0, 0, 0 for lie in range(1,n): for hang in range(3): dp[hang][lie] = dp[0][lie - 1] + abs(arr[hang][lie] - arr[0][lie - 1]) dp[hang][lie] = min(dp[hang][lie], dp[1][lie - 1] + abs(arr[hang][lie] - arr[1][lie - 1])) dp[hang][lie] = min(dp[hang][lie], dp[2][lie - 1] + abs(arr[hang][lie] - arr[2][lie - 1])) #print(dp) print(min(dp[0][-1], dp[1][-1], dp[2][-1])) #print(arr) '''#示例输入 5 5 9 5 4 4 4 7 4 10 3 2 10 9 2 3 '''
输出:
5
步骤:
1、按行复原矩阵
2、按列复原矩阵
3、再按行复原矩阵
n,m,q = list(map(int,input().split()))
A = [[0]*m for _ in range(n)]
Q = [[0]*2 for _ in range(q)]
for i in range(n):
A[i] = list(map(int, input().split()))
for i in range(q):
Q[i] = list(map(int, input().split()))
for hang in range(n):
flag = 0
i , i_val, j, j_val =-1,0,-1,0
for lie in range(m):
if A[hang][lie]:
flag += 1
if i==-1:
i, i_val = lie, A[hang][lie]
elif j==-1:
j, j_val = lie, A[hang][lie]
if flag>=2:
for lie in range(m):
A[hang][lie] = A[hang][i] + int((j_val-i_val)/(j-i)*(lie - i))
#print(A)
for lie in range(m):
flag = 0
i , i_val, j, j_val =-1,0,-1,0
for hang in range(n):
if A[hang][lie]:
flag += 1
if i==-1:
i, i_val = lie, A[hang][lie]
elif j==-1:
j, j_val = lie, A[hang][lie]
if flag>=2:
for hang in range(n):
A[hang][lie] = A[hang][i] + int((j_val-i_val)/(j-i)*(lie - i))
#print(A)
for hang in range(n):
flag = 0
i , i_val, j, j_val =-1,0,-1,0
for lie in range(m):
if A[hang][lie]:
flag += 1
if i == -1:
i, i_val = lie, A[hang][lie]
elif j==-1:
j, j_val = lie, A[hang][lie]
if flag>=2:
for lie in range(m):
A[hang][lie] = A[hang][i] + int((j_val-i_val)/(j-i)*(lie - i))
#print(A)
for i in range(q):
if A[Q[i][0]-1][Q[i][1]-1] == 0:
print('Unkown')
else:
print(A[Q[i][0]-1][Q[i][1]-1])
#print(A, Q)
'''#示例输入
2 3 6
1 0 3
0 0 0
1 1
1 2
1 3
2 1
2 2
2 3
''' 输出: 1 2 3 Unkown Unkown Unkown
查看14道真题和解析