Quy hoạch động với bitmask

Chào mọi người.

Mình đang gặp vấn đề không giải quyết được, mình muốn giải bằng bài này bằng quy hoạch động bằng bitsmask, tư tưởng thì theo TSP cổ điển.

Cụ thể với tsp cổ điển thì như sau:

int tsp(int, int S) {
    if (S == ((1 << N) - 1)) {
        return c[i][0];
    }
    if (mem[i][S] != -1) {
        return mem[i][S];
    }

    int res = INF;
    for (int j = 0; j < N; j++) {
        if (S & (1 << j))
            continue;

        res = min(res, c[i][j] + tsp(j, S | (1 << j));
    }
    return res;
}

Vậy với dạng này thì mình giải quyết thế nào:

Cám ơn mọi người.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?