摘自《算法竞赛入门经典(第2版)》 P265
保留以后做参考:
void print_ans(int *d, int s) { for(int i = 1; i <= n; i++) if(S >= V[i] && d[S] == d[S - V[i]] + 1) { printf("%d", i); print_ans(d, S - V[i]); break; } }
或者每次更新DP的同时, 更新一个记录方案的数组next[]
摘自《算法竞赛入门经典(第2版)》 P265
保留以后做参考:
void print_ans(int *d, int s) { for(int i = 1; i <= n; i++) if(S >= V[i] && d[S] == d[S - V[i]] + 1) { printf("%d", i); print_ans(d, S - V[i]); break; } }
或者每次更新DP的同时, 更新一个记录方案的数组next[]
转载于:https://www.cnblogs.com/QQ-1615160629/p/5413860.html