int INF = -(<<);

// 记忆化搜索
min[] = ;
int dp(int i) {
if(maxv[i] != -)
return maxv[i];
maxv[i] = -INF;
for(int j = ; j <= n; j++)
if(i >= V[j])
maxv[i] = max(maxv[i], dp(i-V[j]) + );
return maxv[i];
} printf("%d\n", dp[S]); // 递推
maxv[] = ;
for(int i = ; i <= S; i++) {
maxv[i] = -INF;
}
for(int i = ; i <= S; i++)
for(int j = ; j <= n; j++)
if(i >= V[j])
maxv[i] = max(maxv[i], maxv[i-V[j]] + );
// 上面这条语句相当于
//if(maxv[i] < maxv[i-V[j]] + 1) {
// maxv[i] = maxv[i-V[j]] + 1;
} printf("%d\n", maxv[S]); void print_ans(int* maxv, int S) {
for(int j = ; j <= n; j++)
if(S >= V[j] && maxv[S] == maxv[S-V[j]] + ) {
printf("%d ", j);
print_ans(maxv, S-V[j]);
break;
}
} // 递推 2
maxv[] = ;
for(int i = ; i <= S; i++) {
maxv[i] = -INF;
}
for(int i = ; i <= S; i++)
for(int j = ; j <= n; j++)
if(i >= V[j]) {
if(maxv[i] < maxv[i-V[j]] + ) {
maxv[i] = maxv[i-V[j]] + ;
max_coin[i] = j;
}
} void print_ans(int* max_coin, int S) {
while(S) {
printf("%d ", max_coin[S]);
S -= V[max_coin[S]];
}
}

最新文章

  1. mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
  2. Android 四大组件之三(广播)
  3. SSH web.xml文件配置
  4. ionic react-native和native开发移动app到底那个好
  5. LinQ系列文章
  6. Linq中Union与Contact方法用法对比
  7. bzoj4171 or 省队集训day3 chess: Rhl的游戏
  8. SQLSERVER一个比较不错的分页存储过程p_splitpage
  9. 《Java并发编程实战》第七章 取消与关闭 读书笔记
  10. HTML 概述
  11. Java集合系列[4]----LinkedHashMap源码分析
  12. android studio运行的时候出现Unable to obtain debug bridge错误的解决办法
  13. fabric.js和高级画板
  14. PyQt5嵌入matplotlib动画
  15. pytest进阶之xunit fixture
  16. 记录opencv编译过程
  17. 详解Vue Native
  18. JS之console.log详解以及兄弟姐们邻居方法扩展
  19. SpringBoot 推荐博客
  20. Jquery 组 checkbox全选checkbox

热门文章

  1. Django项目:CRM(客户关系管理系统)--09--04PerfectCRM实现King_admin注册功能01
  2. 微信小程序-- WXML语法
  3. void 运算符
  4. python 从数据库取回来的数据中文显示为乱码
  5. LintCode_181 将整数A转换为B
  6. CSS:命名规范心得分享
  7. python编写购物车小程序
  8. 电影的微信小程序
  9. at: 安排一个任务在未来执行,需要一个atd的系统后台进程
  10. SQLServer —— 视图