杭电 acm 1085 Holding Bin-Laden Captive!
2015-10-21 10:22
375 查看
杭电 acm 1085 Holding Bin-Laden Captive!
思路很简单:
0)数组T[i]表示面额 i 是否能组成。
1)先用硬币面额1(num_1个)的,看看组成哪些面额(1~num_1);
2)再加上面额为2(num_2个)的,,两层循环,外层为使用 j 个面额为2的硬币,内层将之前使用1组成的所有加 2*j 置为true,表示这个面额可以实现了 ;
3)再加上面额为5(num_5个)的,如同步骤2,;
思路很简单:
0)数组T[i]表示面额 i 是否能组成。
1)先用硬币面额1(num_1个)的,看看组成哪些面额(1~num_1);
2)再加上面额为2(num_2个)的,,两层循环,外层为使用 j 个面额为2的硬币,内层将之前使用1组成的所有加 2*j 置为true,表示这个面额可以实现了 ;
3)再加上面额为5(num_5个)的,如同步骤2,;
#include <iostream> #include <cstring> using namespace std; const int NUM=10000+10; bool T[NUM];//用于标志第i位是否能组成 int main() { int a,b,c; while(cin>>a>>b>>c) { if(a==0&&b==0&&c==0)break; memset(T,0,sizeof(bool)*NUM); memset(t,0,sizeof(bool)*NUM); //只有1时 for(int i=0 ;i<=a ;++i) { T[i]=true; } //加上2 for(int i=0; i<=b; i++) { for(int j=0;j<=a;++j) { if(T[j])T[j+i*2]=true; } } //加上5 for(int i=0; i<=c; i++) { for(int j=0;j<=a+2*b ;++j) { if(T[j])T[j+i*5]=true; } } for(int i=0;i<=a+b*2+5*c+1;++i) { if(!T[i]) { cout<<i<<endl; break; } } } }
相关文章推荐
- 动态隐藏导航栏
- SVN错误:Attempted to lock an already-locked dir
- c++ Map使用
- HDU - 3974 Assign the task(线段树 区间修改)
- 分享马哥Linux全套视频教程,马哥Linux系列之零基础企业级Linux系统工程师网络高级就业班培训,下载完全免费,要保证5G左右的空间哦
- 字符串
- ORACLE 下载地址及OTL数据库工具
- 上海房屋租赁合同登记备案证明办理流程
- Linux kernel编译
- ueditor 未找到上传文件
- nodejs开发环境sublime配置
- 换行的css属性
- PHP面向对象:instanceof 运算符 (备忘)
- SQL总结(六)触发器
- POPTEST学员就业面试题目!!!!!
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
- python中的多态
- selenium2+webdriver+java环境搭建关于引用包的问题
- 一张表可以有多少个主键
- TatukGIS Editor使用教程:GPS和等高线