Đây là một vấn đề về thuật toán/toán học nhưng tôi hy vọng sẽ triển khai một giải pháp trong C++.Làm cách nào để thêm số trong ma trận vào kết quả tối thiểu lợi nhuận?
Giả sử tôi có một ma trận như vậy mà chấm đại diện cho số nguyên:
W X Y Z
A . . . .
B . . . .
C . . . .
D . . . .
Làm thế nào tôi sẽ mang lại kết quả tối thiểu nếu tôi phải chọn một số từ mỗi cột như rằng có ít nhất một số từ từng hàng?
Ví dụ, tôi có thể chọn AW BX CY DZ
hoặc AZ BX CY DW
nhưng KHÔNG AW BW CZ DZ
Phương pháp brute force sẽ dường như mất n! tính toán. Có cách nào nhanh hơn không? Cuối cùng tôi muốn thêm số vào ma trận có kích thước ~ 60.
Ngoài ra, tất cả các số nằm trong khoảng từ 0 đến 256.
n giai thừa thực tế. lỗi của tôi. – Tarik
Giả sử bạn bắt đầu với AW, BX hoặc BW, AX: Trong cả hai trường hợp, A, B hàng và W, X cột sẽ được ra ngoài. Suy nghĩ dọc theo những dòng đệ quy và bộ nhớ đệm kết quả nên làm các trick. Xem http://en.wikipedia.org/wiki/Dynamic_programming – Tarik
http://en.wikipedia.org/wiki/Hungarian_algorithm Câu hỏi của bạn trông tương tự như vấn đề này. – user2548103