SSL_2295 暗黑破坏神
来源:互联网 发布:淘宝直通车入门知识 编辑:程序博客网 时间:2024/05/17 07:10
题意:
就是多重背包,要记录路径。
思路:
可以用一个数组记录路径,最后递归回去。
代码:
#include<cstdio>int x,y,max1,n,m,p[501],c[501],w[501][51],f[501][501],b[501][501];void print(int x,int y){if (x==0) return;print(x-1,y-b[x][y]*c[x]);//递归回去if(!b[x][y])printf("0\n");else{printf("%d\n",b[x][y]);}}int main(){f[0][0]=0;scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){scanf("%d%d",&c[i],&p[i]);for (int j=1;j<=p[i];j++)scanf("%d",&w[i][j]);}for (int i=1;i<=n;i++) for (int j=0;j<=m;j++) { f[i][j]=f[i-1][j]; for (int k=0;k<=p[i];k++) { if (j<k*c[i]) break; if (f[i-1][j-k*c[i]]+w[i][k]>f[i][j]) { f[i][j]=f[i-1][j-k*c[i]]+w[i][k];//多重背包b[i][j]=k;//记录路径 } } }printf("%d\n",f[n][m]);for (int j=1;j<=m;j++) if (f[n][j]>max1) { max1=f[n][j]; x=n; y=j; }print(x,y);for (int i=x+1;i<=n;i++) printf("0\n");}
阅读全文
0 0
- SSL_2295 暗黑破坏神
- SSL_2295 暗黑破坏神(动规练习题)
- 暗黑破坏神
- 暗黑破坏神
- 暗黑破坏神
- 暗黑破坏神
- 暗黑破坏神
- 【9921】暗黑破坏神
- [DP]暗黑破坏神
- 暗黑破坏神(diablo)
- 暗黑破坏神快速RR详解
- 暗黑破坏神2 换装系统
- android版 暗黑破坏神
- [暗黑破坏神]数据库文件修改
- 暗黑破坏神(动态规划)
- 暗黑破坏神(动态规划)
- SSL2295 暗黑破坏神(dp)
- 背包 动态规划 暗黑破坏神
- linux下调试程序注意事项
- iOS fwrite写入文件到document失败.
- 【笔记-C语言】 const
- STM32-MDK5基础使用
- Smart-Forms套打和不套打
- SSL_2295 暗黑破坏神
- ssl2290-潜水员【dp之二维费用】
- 5. Longest Palindromic Substring
- 十六进制字符串、bytes数组、字符串三中之间转换
- Java核心技术Ⅰ——心得(1)
- struct event
- 利用Keras实现多层感知器(MLP)模型和卷积神经网络(CNN)模型并对手写数字图像分类
- Mask RCNN的keras实现需要的相关资源——matterport Mask_RCNN配置
- 【笔记-C语言】 预处理