Viết chương trình Python để tính tổng lớn nhất và nhỏ nhất của một danh sách con trong một danh sách các danh sách cho trước
Giải pháp mẫu
Mã Python
def max_min_sublist[lst]:
max_result = [max[lst, key=sum]]
min_result = [min[lst, key=sum]]
return max_result,min_result
nums = [[1,2,3,5], [2,3,5,4], [0,5,4,1], [3,7,2,1], [1,2,1,2]]
print["Original list:"]
print[nums]
result = max_min_sublist[nums]
print["\nMaximum sum of sub list of the said list of lists:"]
print[result[0]]
print["\nMinimum sum of sub list of the said list of lists:"]
print[result[1]]
Đầu ra mẫu
Original list: [[1, 2, 3, 5], [2, 3, 5, 4], [0, 5, 4, 1], [3, 7, 2, 1], [1, 2, 1, 2]] Maximum sum of sub list of the said list of lists: [2, 3, 5, 4] Minimum sum of sub list of the said list of lists: [1, 2, 1, 2]
trình bày bằng hình ảnh
Sơ đồ
Trực quan hóa việc thực thi mã Python
Công cụ sau đây trực quan hóa những gì máy tính đang thực hiện từng bước khi nó thực thi chương trình nói trên
Giả sử chúng ta có một mảng A. Chúng ta phải tìm danh sách con liền kề có tổng lớn nhất và cũng trả về tổng của nó. Vì vậy, nếu mảng A giống như A = [-2,1,-3,4,-1,2,1,-5,4], thì tổng sẽ là 6. Và mảng con sẽ là [4, -1, 2, 1]
Để giải quyết vấn đề này, chúng tôi sẽ cố gắng sử dụng phương pháp Lập trình động
xác định một mảng dp giống như kích thước của A và điền nó bằng 0
dp[0]. = A[0]
cho tôi. = 1 với kích thước của A – 1
dp[i]. = tối đa của dp[i – 1] + A[i] và A[i]
trả về giá trị tối đa tính bằng dp
Chúng ta hãy xem triển khai sau đây để hiểu rõ hơn -
Ví dụ
Bản thử trực tiếp
class Solution[object]: def solve[self, nums]: dp = [0 for i in range[len[nums]]] dp[0] = nums[0] for i in range[1,len[nums]]: dp[i] = max[dp[i-1]+nums[i],nums[i]] return max[dp] nums = [-2,1,-3,7,-2,2,1,-5,4] ob1 = Solution[] print[ob1.solve[nums]]
Đầu vào
[-2,1,-3,7,-2,2,1,-5,4]
đầu ra
8
Chúng ta có thể duyệt qua các danh sách bên trong danh sách và tính tổng tất cả các phần tử trong một danh sách nhất định và bằng hàm max lấy tổng tối đa của tất cả các phần tử trong danh sách của danh sách.
con trăn
86
87
88
89
330
330
331
332
333
334
331
336
331
338
339
330
331
332
333
333
334
332____57
332
338
class Solution[object]: def solve[self, nums]: dp = [0 for i in range[len[nums]]] dp[0] = nums[0] for i in range[1,len[nums]]: dp[i] = max[dp[i-1]+nums[i],nums[i]] return max[dp] nums = [-2,1,-3,7,-2,2,1,-5,4] ob1 = Solution[] print[ob1.solve[nums]]50
330
class Solution[object]: def solve[self, nums]: dp = [0 for i in range[len[nums]]] dp[0] = nums[0] for i in range[1,len[nums]]: dp[i] = max[dp[i-1]+nums[i],nums[i]] return max[dp] nums = [-2,1,-3,7,-2,2,1,-5,4] ob1 = Solution[] print[ob1.solve[nums]]52
class Solution[object]: def solve[self, nums]: dp = [0 for i in range[len[nums]]] dp[0] = nums[0] for i in range[1,len[nums]]: dp[i] = max[dp[i-1]+nums[i],nums[i]] return max[dp] nums = [-2,1,-3,7,-2,2,1,-5,4] ob1 = Solution[] print[ob1.solve[nums]]53
333____255
333
class Solution[object]: def solve[self, nums]: dp = [0 for i in range[len[nums]]] dp[0] = nums[0] for i in range[1,len[nums]]: dp[i] = max[dp[i-1]+nums[i],nums[i]] return max[dp] nums = [-2,1,-3,7,-2,2,1,-5,4] ob1 = Solution[] print[ob1.solve[nums]]57
332_______52
333
331____52
333
334
332
331
337
332
331
860
861
333
863
864
865
866
865
868
869
870
865
872
865
874
869
876
865
878
865
880
869
882
865
884__
865
88