摘自《算法竞赛入门经典(第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[]
本文共 329 字,大约阅读时间需要 1 分钟。
摘自《算法竞赛入门经典(第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