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

algorithm - 跟进: Find the optimal sequence of stops where the number of stops are fixed

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 05:15:50 27 4
mua khóa gpt4 Nike

Tôi đang cố gắng mã hóa vấn đề sau:

trong một0, Một1, ..., Mộtn Có n khách sạn ở vị trí sao cho 0 < a 0 <>1 < ... < mộtn. Nơi duy nhất bạn có thể ở là tại những khách sạn này, nhưng bạn có thể chọn khách sạn nào mình dừng chân. Bạn phải dừng lại ở khách sạn cuối cùng (cách an), đây là điểm đến của bạn. Ngoài ra, bạn cần hoàn thành hành trình của mình trong đúng d ngày (tức là bạn phải dừng d-1 ở giữa). Nếu bạn lái xe x dặm trong một ngày, chi phí của bạn cho ngày đó là x2. Bạn muốn lập kế hoạch cho chuyến đi của mình để giảm thiểu tổng chi phí - tức là tổng chi phí hàng ngày cho tất cả các ngày đi lại. Tìm thứ tự khách sạn tốt nhất cho kỳ nghỉ của bạn.

Tôi đã nghĩ ra giải pháp dp này:

cho phépdp(i)Đó là chi phí thấp nhất để dừng chân cuối cùng ở một khách sạn i. Trường hợp cơ bản:dp(0)=0 .

Để tính dp(i) tôi xem xét tất cả các vị trí có thể 0<=k<> , chúng tôi có thể đã dừng lại trước đó. Do đó, mối quan hệ truy hồi trở thành:

cho i=1;i<=n;i++
dp(i)=inf
trước(i)=không xác định
với k=0;k<>
if (dp(i)>dp(k)+(ai-ak)^2)
dp(i) = dp(k)+(ai-ak)^2)
trước(i) = k

Làm cách nào để đảm bảo rằng thuật toán thực hiện chính xác d lần tạm dừng?

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

Tôi cũng đã viết câu trả lời này cho câu hỏi trước của bạn, nhưng tôi nghĩ bạn đã bỏ qua nó. Dù sao, hãy cho tôi biết nếu phương pháp này hiệu quả.

Thuật toán của bạn sẽ cung cấp cho bạn vị trí điểm dừng lỗ của bạn (int[] k), điều này sẽ giảm thiểu chi phí của bạn mà không tính đến d. Tôi hiểu từ câu hỏi của bạn rằng bạn muốn chuyển đổi k trạm này thành d trạm.

Có 3 tình huống:

1)

k.length == d;

vấn đề đã được giải quyết

2)

k.độ dài < d;

while(k.length!=d) Tìm khoảng cách tối thiểu (min) giữa a(n-1) và a(n) với mọi n. Bắt đầu đi qua từ khách sạn đầu tiên. Tìm lần xuất hiện đầu tiên trong đó a(n) - a(n-1) là giá trị nhỏ nhất. Bây giờ, nếu hai khách sạn này nằm trong k của bạn, hãy tìm lần xuất hiện tiếp theo, nếu không hãy chia các điểm dừng của bạn để đưa chúng vào k dưới dạng các điểm dừng riêng biệt và lặp lại.

Nếu bạn đến cuối khách sạn, bạn có thể thực hiện việc này bằng cách sử dụng khoảng cách tối thiểu thứ hai, v.v. cho đến khi hội tụ.

3)

k.độ dài > d;

while(k.length!=d) Lần này bạn cần tìm khoảng cách tối thiểu giữa hai hàng xóm trong k. Hợp nhất hai hàng xóm vào một trạm cho đến khi hội tụ.

Tôi không chắc liệu cách tiếp cận này là tốt nhất hay đúng đắn, nhưng đây là hai xu của tôi.

Về thuật toán - theo dõi: Tìm chuỗi điểm dừng tối ưu trong đó số điểm dừng được cố định, 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/46881229/

27 4 0
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