Mô tả bài toán
Cho n tọa độ 3D. Chi phí từ (a,b,c) đến (x,y,z) = |x-a|+|y-b|+max(0,z-c). Bắt đầu từ tọa độ 0, thăm tất cả ít nhất 1 lần, quay về tọa độ 0. Tìm chi phí nhỏ nhất (TSP bitmask DP).
Ví dụ
n=3, coords={{1,1,0},{1,3,4},{3,2,2}}. Đầu ra: 12.
Thuật toán (Held-Karp DP bitmask)
dp[mask][last]= chi phí nhỏ nhất đi qua tậpmaskkết thúc tạilast.- Khởi tạo
. - Chuyển trạng thái: từ
thử thêmchưa trong mask:. - Kết quả: min trên
của.
Đoạn mã C++
#include <bits/stdc++.h>
using namespace std;
const int INF=1e9;
int solve(int n,vector<tuple<int,int,int>> coords){
vector<vector<int>> dp(1<
Đầu vào / Đầu ra
Input: 3, {{1,1,0},{1,3,4},{3,2,2}}
Output: 12