Tôi đang thực hành các thuật toán cho các cuộc phỏng vấn việc làm sắp tới và tôi gặp sự cố khi triển khai chính xác giải pháp này. Tôi cũng đang cố gắng tối đa hóa hiệu quả. Đây là vấn đề:Giải quyết thuật toán lợi nhuận tối đa
Tối đa hóa lợi nhuận của doanh nghiệp bạn bán thanh kim loại. Nếu bạn bán N thanh kim loại có chiều dài L, bạn nhận được N * L * metal_price. Các thanh kim loại nhỏ hơn còn lại sẽ được chuyển vào thùng rác. Để cắt thanh kim loại, bạn cần phải trả cost_per_cut cho mỗi lần cắt. Lợi nhuận tối đa bạn có thể kiếm được là bao nhiêu? đầu vào
constraints:
lengths will be 1 to 50 elements, inclusive.
each element of length will lie in range [1,10000]
1 <= metal_price, cost_per_cut <=1000
mẫu:
cost_per_cut =1
metal_price =10
lengths = [26,103, 59]
return: 1770
cách cuốn sách giải quyết này là chiều dài tối ưu nhất của thanh là 6. vì vậy chúng tôi cắt 4 miếng có độ dài 6 từ que 1st, và ném miếng dài 2 từ nó. tiếp theo chúng tôi cắt 17 miếng chiều dài 6 từ thanh thứ 2, và vứt bỏ chiều dài 1. cho thứ ba, chúng tôi cắt 9 miếng chiều dài 6, và ném một mảnh chiều dài 5. vì vậy trong tổng số chúng tôi đã thực hiện 30 vết cắt. Vì vậy, 30 * 6 * 10 - 30 * 1-1770
Đây là nỗ lực của tôi cho đến nay:
def maxProfit(cost_per_cut, metal_price, lengths):
profit =0
for num in lengths:
Tôi chỉ là không thực sự chắc chắn làm thế nào để đi về việc này. Tôi có nên lặp lại các con số và xem con số thấp nhất mà chúng có thể chia hết cho và sử dụng số đó không? Bất kỳ ý tưởng?
Chỉ cần tò mò, cuối cùng chúng ta phải đảm bảo rằng có một chiều dài tối ưu của thanh được bán?Giống như trong trường hợp này cho tất cả các yếu tố, nó là 6? Hay chúng ta chỉ quan tâm đến việc tối đa hóa lợi nhuận? Bởi vì sau đó chúng tôi có thể bán thanh có độ dài khác nhau. –