poj 1276 多重背包
来源:互联网 发布:获取网页源码 编辑:程序博客网 时间:2024/05/16 23:55
给你一个cash,n种钱,每种钱的数量及价值,问最大接近cash凑成多少。
就是多重背包。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int cash,n,numb[20],value[20],dp[1000000];void complete(int cost){for(int j=cost;j<=cash;j++){if(dp[j-cost]){dp[j]=1;}}}void zeroone(int cost){for(int j=cash;j>=cost;j--){if(dp[j-cost]){dp[j]=1;}}}int main(){while(scanf("%d",&cash)!=EOF){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&numb[i],&value[i]);}for(int i=0;i<=cash;i++)dp[i]=0;dp[0]=1;for(int i=1;i<=n;i++){if(numb[i]){if(numb[i]*value[i]>=cash){complete(value[i]);}else{int ki=1,amount=numb[i];while(ki<amount){zeroone(value[i]*ki);amount-=ki;ki*=2;}zeroone(value[i]*amount);}}}int j=cash;while(dp[j]==0&&j>0){j--;}printf("%d\n",j);}return 0;}
- poj 1276 多重背包..
- POJ--1276:多重背包
- POJ 1276 多重背包
- POJ 1276 多重背包
- poj 1276 多重背包
- poj 1276 多重背包
- poj 1276 多重背包
- POJ 1276 多重背包
- POJ 1276 多重背包
- POJ 1276(多重背包)
- poj 1276 多重背包
- poj 1276 多重背包
- POJ 1276 多重背包问题
- POJ 1276(多重背包)
- poj 1276 多重背包问题
- poj 1276(多重背包)
- poj 1276CashMachine多重背包
- POJ-1276(多重背包)
- STM32 JNTRST JTDI JTDO引脚用做普通IO方法
- myeclipse6.5工具破解
- 软件需求分析
- Hashtable与HashMap区别
- .NET中反射的应用
- poj 1276 多重背包
- java基础环境安装
- 【Oracle】小记
- RMXP教程3-1
- table中TextBox跨列设置
- Qt实现基本QMainWindow主窗口程序
- apache服务器安装以及使用passenger插件部署rails应用,基于ubuntu 12.04 LTS
- RMXP教程3-2
- RMXP教程3-3