01背包 第k优解
来源:互联网 发布:c语言静态局部变量 编辑:程序博客网 时间:2024/04/29 02:57
求次优解、第K 优解
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;struct Node{ int price; int val;} node[1005];int main(){ int t; scanf("%d",&t); while(t--) { int n,v,k,i,dp[1005][31] = {0},a[31],b[31]; scanf("%d%d%d",&n,&v,&k); for(i = 0; i<n; i++) scanf("%d",&node[i].price); for(i = 0; i<n; i++) scanf("%d",&node[i].val); int j; for(i = 0; i<n; i++) { for(j = v; j>=node[i].val; j--) { int cnt = 0,d; for(d = 1; d<=k; d++)//分别将放入第i个石头与不放第i个石头的结果存入a,b,数组之中 { a[d] = dp[j-node[i].val][d]+node[i].price; b[d] = dp[j][d]; } int x,y,z; x = y = z = 1; a[d] = b[d] = -1; while(z<=k && (x<=k || y<=k))//循环找出前K个的最优解 { if(a[x] > b[y]) { dp[j][z] = a[x]; x++; } else { dp[j][z] = b[y]; y++; } if(dp[j][z]!=dp[j][z-1]) z++; } } } printf("%d\n",dp[v][k]); } return 0;}
0 0
- 01背包 第k优解
- 01背包 第k优解
- hdu 2639 01背包第k优解
- Hduoj2639【01背包+第k优解】
- hdu2639 01背包第k优解
- 再谈01背包--01背包第k优解
- 背包问题第k优解
- 背包问题第k优解
- 01背包第k大
- Hdu 2639 Bone Collector II (01背包第k优解)
- hdu2639 Bone Collector II 01背包第K优解
- hdu2639Bone Collector II (01背包,求第k优解)
- hdu 2639 Bone Collector II 01背包第K优解
- HDU 2639 Bone Collector II 01背包第K优解
- hdu 2639 Bone Collector II 01背包 第k优解
- Bone Collector II (HDU_2639) 01背包 + 第K优解
- hdu 2639 01背包的 第K优解
- hdu2639(01背包求第k优解)
- 快速排序C语言实现(递归)和希尔排序
- sqldeveloper的查看执行计划快捷键F10
- linux下终端复用软件之tmux
- Python爬虫基础-3
- 关于神经网络的一点理解
- 01背包 第k优解
- 自学-ES6篇-对象的扩展
- JAVA设计模式-命令模式
- 【闭关0】准备开始入门数据挖掘
- Qt控制台中文乱码问题
- [HDU 5086] Revenge of Segment Tree (前缀和)
- mysql 删除重复记录
- LeetCode No.198 House Robber
- 使用C#操作IIS7的辅助类