博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1252 Euro Efficiency (完全背包)
阅读量:6962 次
发布时间:2019-06-27

本文共 839 字,大约阅读时间需要 2 分钟。

先计算6种钱币相加的情况,有f[j] = min(f[j], f[j-data[i]]+1) ;

然后计算找零的情况,有f[j] = min(f[j], f[j+data[i]]+1) ;

计算的上限要比100大,因为有找零的情况,但是要大多少不太好确定。

code:

#include<cstdio>
#include<cstring>
#include<algorithm>
using 
namespace std ;
const 
int Max = 
2500 ;
//
..
int data[
6], f[Max] ;
int main(){
    
int t, n, i, j, sum, max ;
    scanf(
"
%d
", &t) ;
    
while(t--){
        
for(i=
0; i<
6; i++)
            scanf(
"
%d
", &data[i]) ;
        f[
0] = 
0 ;
        
for(i=
1; i<Max; i++)
            f[i] = 
2000000 ;
        
for(i=
0; i<
6; i++)      
//
相加
            
for(j=data[i]; j<Max; j++)
                f[j] = min(f[j], f[j-data[i]]+
1) ;
        
for(i=
0; i<
6; i++)      
//
相减
            
for(j=Max-data[i]; j>=
1; j--)
                f[j] = min(f[j], f[j+data[i]]+
1) ;
        sum = max = 
0 ;
        
for(i=
1; i<=
100; i++){
            sum += f[i] ;
            
if(f[i]>max)    max = f[i] ;
        }
        printf(
"
%.2lf %d\n
", (
double)sum/
100, max) ;
    }
    
return 
0 ;} 

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/04/14/2446726.html

你可能感兴趣的文章
Android窗口机制(四)ViewRootImpl与View和WindowManager
查看>>
maven仓库地址
查看>>
NodeJs:使用connect构建简单的用户登录
查看>>
推荐一款C/C++在线编译器
查看>>
Maven的微信公众号项目部署到SAE用户消息无响应
查看>>
HIVE启动失败错误汇总
查看>>
OS系统对移动硬盘读写权限
查看>>
还原sql server数据库时,无法获得对数据库的独占访问权
查看>>
在cocos2d-x中解决中文乱码问题
查看>>
NDK学习三:[转载] android开发 NDK 编译和使用静态库、动态库
查看>>
企业微博发布时间_内容_原则2
查看>>
Android安全退出应用程序
查看>>
第三方登录之我谈
查看>>
Angular JS 模块
查看>>
十六进制转二进制
查看>>
设计模式之模板模式
查看>>
直接插入排序
查看>>
springmvc4.x返回json数据
查看>>
日志管理-slf4j+logback
查看>>
iOS逆向之三-authorized_keys ssh登录越狱手机免验证设置
查看>>