cuốn sách gpt4 ai đã làm

python - tìm tổng các tập hợp con bằng lập trình động

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 14:57:14 26 4
mua khóa gpt4 Nike

Tôi đang thực hành lập trình động và đang gặp khó khăn trong việc gỡ lỗi mã của mình. Ý tưởng là tìm hiểu xem liệu một danh sách các số đã cho có thể được tính tổng hay không. Đây là mã của tôi:

a = [2,3,7,8,10]
tổng = 11
b = danh sách(phạm vi(1, tổng+1))
m = [[Sai cho z trong phạm vi(len(b))] cho i trong phạm vi(len(a))]

cho i, x trong liệt kê (b):
cho j, y trong liệt kê (a):
nếu x==y:
m[j][i]=Đúng
Elif y<>
m[j][i] = m[j-1][i]
khác:
m[j][i] = m[j-1][i] hoặc m[ji][yx]

cho i, n trong liệt kê (m):
in(a[i], n)

这是输出:

2 [Sai, Đúng, Sai, Sai, Sai, Sai, Sai, Sai, Sai, Sai, Sai]
3 [Sai, Đúng, Đúng, Sai, Sai, Sai, Sai, Sai, Sai, Sai, Sai]
7 [Sai, Đúng, Đúng, Sai, Đúng, Đúng, Đúng, Sai, Sai, Sai, Sai]
8 [Sai, Đúng, Đúng, Sai, Đúng, Đúng, Đúng, Đúng, Sai, Sai, Sai]
10 [Sai, Đúng, Đúng, Sai, Đúng, Đúng, Đúng, Đúng, Đúng, Đúng, Sai]

Theo những gì tôi hiểu, trong câu lệnh khác của tôi, thuật toán được cho là di chuyển lên 1 hàng rồi xem xét sự khác biệt về x và y và kiểm tra xem vị trí đó có khả thi hay không. Vì vậy, ví dụ trong trường hợp rõ ràng nhất là phần tử cuối cùng ở hàng cuối cùng. Đó sẽ là 10(y)-11(x), sẽ quay trở lại chỉ mục 1 của hàng phía trên nó, mà như chúng ta biết là Đúng. Không hoàn toàn chắc chắn những gì tôi đang làm sai, bất kỳ trợ giúp nào để hiểu điều này sẽ được đánh giá rất cao.

câu trả lời hay nhất

Nếu bạn chỉ cần nhậpGiá trị dương, Tôi không hiểu tại sao bạn cần danh sách 2D. Bạn chỉ có thể sử dụng danh sách 1D:

xu = [2,3,7,8,10]
tổng = 11

Tiếp theo chúng ta khởi tạo danh sáchkhả thi, cho biết liệu có thể đạt được một giá trị nhất định hay không. chúng tôi sẽ có thể[0] 设置为 ĐÚNG VẬY Bởi vì số tiền này có thể được thực hiện mà không cần tiền xu.

có thể = [Sai cho _ trong phạm vi(tổng+1)]
có thể[0] = Đúng

Bây giờ bạn lặp qua từng đồng tiền, lặp qua danh sách và "nâng cấp" giá trị nếu có thể:

đối với tiền xu bằng tiền xu:
cho i trong phạm vi(sum-coin,-1,-1):
nếu có thể[i]:
có thể[i+coin] = Đúng

sau đó,khả thi Danh sách hiển thị từ 0 đến (bao gồm cả tổng hợp), bạn có thể xây dựng nó. Vì vậy, nếu có thể[tổng]ĐÚNG VẬY, bạn có thể xây dựng tổng hợp.

cho một cái nhất địnhđồng xutổng hợp, người ta nhận được:

>>> có thể
[Đúng, Sai, Đúng, Đúng, Sai, Đúng, Sai, Đúng, Đúng, Đúng, Đúng, Đúng]

Do đó giá trị 0,2,3,5,7, 8, 9, 10, 11 Có thể được xây dựng bằng cách sử dụng tiền xu.

Biên tập viên: Theo dõi tiền xu

Bạn cũng có thể theo dõi tiền xu bằng cách sửa đổi một chút mã:

có thể = [Không có cho _ trong phạm vi (tổng+1)]
có thể[0] = []
đối với tiền xu bằng tiền xu:
cho i trong phạm vi(sum-coin,-1,-1):
nếu có thể[i] không phải là Không có:
có thể[i+coin] = có thể[i]+[coin]

Bây giờ nó có thể trông giống như:

>>> có thể
[[], Không, [2], [3], Không, [2, 3], Không, [7], [8], [2, 7], [10], [3, 8]]

所以0Có thể xây dựng bằng tiền xu[](không có tiền); 2có sẵn[2]xây dựng (giá trị đồng xu2),3[3],5[2,3] Chờ đợi

Về python - tìm tổng các tập hợp con bằng lập trình động, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/41570374/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress