2015-10-19 17 views
6

Với hai mảng AB, mỗi chứa n số không âm, loại bỏ các yếu tố a>0 từ ngày kết thúc của A và b>0 yếu tố từ cuối B. Đánh giá chi phí của một hoạt động như X*Y trong đó X là tổng của các phần tử a bị xóa khỏi các phần tử AY tổng các phần tử b bị xóa khỏi B. Tiếp tục làm điều này cho đến khi cả hai mảng trống. Mục đích là để giảm thiểu tổng chi phí.Với 2 mảng các số không âm, tìm tổng tối thiểu các sản phẩm

Sử dụng lập trình động và thực tế là chiến lược tối ưu sẽ luôn lấy chính xác một phần tử từ A hoặc B Tôi có thể tìm thấy giải pháp O (n^3). Bây giờ tôi tò mò muốn biết nếu có một giải pháp thậm chí còn nhanh hơn cho vấn đề này?

EDIT: Trộm cắp một ví dụ từ @recursive trong các ý kiến:

A = [1,9,1] và B = [1, 9, 1]. Có thể làm với chi phí 20. (1) * (1 + 9) + (9 + 1) * (1)

+0

Theo tôi giải pháp nên chọn hai phần tử cuối cùng của mỗi mảng tổng hợp chúng rồi thêm. Trên). –

+0

Nếu tôi sai thì xin vui lòng làm rõ báo cáo vấn đề cho tôi –

+0

Theo tuyên bố của bạn, chúng tôi phải xóa từ cuối A và kết thúc B –

Trả lời

4

Đây là O(n^2). Gọi CostA(i, j) là chi phí tối thiểu để loại bỏ A[1..i], B[1..j] theo cách mà lần xóa đầu tiên chỉ mất một phần tử từ B. Gọi CostB(i, j) là chi phí tối thiểu để loại bỏ A[1..i], B[1..j] theo cách mà lần xóa đầu tiên chỉ mất một phần tử từ A. Chúng tôi có tái phát lẫn nhau đệ quy

CostA(i, j) = A[i] * B[j] + min(CostA(i - 1, j), 
           CostA(i - 1, j - 1), 
           CostB(i - 1, j - 1)) 
CostB(i, j) = A[i] * B[j] + min(CostB(i, j - 1), 
           CostA(i - 1, j - 1), 
           CostB(i - 1, j - 1)) 

với trường hợp cơ sở

CostA(0, 0) = 0 
CostA(>0, 0) = infinity 
CostA(0, >0) = infinity 
CostB(0, 0) = 0 
CostB(>0, 0) = infinity 
CostB(0, >0) = infinity. 

Câu trả lời là min(CostA(n, n), CostB(n, n)).

+0

Cảm ơn người đàn ông, đó là một releif. Thật đơn giản! – user1337

+2

Thực ra bạn chỉ cần một "Chi phí (i, j)" trong đó 'Chi phí (i, j) = A [i] * B [j] + phút (Chi phí (i, j - 1), Chi phí (i - 1) , j), Chi phí (i - 1, j - 1)) ' – user1337

+0

Triển khai và xác minh cả hai giải pháp. Có thể xác nhận chúng hoạt động đúng cách. – Kenji

Các vấn đề liên quan