算法训练 最大体积  
时间限制:1.0s   内存限制:256.0MB
问题描述
  每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000
  如果是无限解,则输出0
输入格式
  第一行一个整数n(n<=10),表示物品的件数
  第2行到N+1行: 每件物品的体积(1<= <=500)
输出格式
  一个整数ans,表示不能用这些物品得到的最大体积。
样例输入
3
3
6
10
样例输出
17
 
题目解析:
  本题其实就是将所有数组合后,从无限大开始,找出第一个不能组成的数。
  分两种情况考虑:
  • 如果所有的物品体积的最大公约数不为1,则为无限解;
  • 如果所有的物品体积的最大公约数为1,则从无限大开始,找出第一个不能组成的数

  eg:

  

示例代码:

 #include<iostream>
using namespace std;
#define MAX_NUM 100000 int n;
int goods[]; //保存物品的体积
int volume[MAX_NUM]; //保存物品能组成的所有体积 int gcd(int a,int b) //求两个数的最大公约数
{
if (a % b == )
return b;
else
return gcd(b, a % b);
} int gcdAll() //求所有数的最大公约数
{
int temp = goods[];
for (int i = ; i < n; i++)
{
temp = gcd(temp, goods[i]);
}
return temp;
} int main()
{
cin >> n;
for (int i = ; i < n; i++)
cin >> goods[i]; if (gcdAll() == ) //如果所有数的最大公约数为1,则有解,否则为无限解
{
volume[] = ;
for (int i = ; i < n; i++)
{
for (int j = goods[i]; j <= MAX_NUM; j++)
{
if (volume[j - goods[i]] == ) //i=0时,j为goods[0]的倍数;
//接下来,j为 goods[i]中物品体积值组合的结果
volume[j] = ;
}
} for (int i = MAX_NUM; i >= ; i--) //逆序遍历所有的体积结果,将第一个不能组合的数输出后结束
{
if (!volume[i])
{
cout<<i;
return ;
}
}
} cout<<""; //无限解 return ;
}

蓝桥杯 算法训练 ALGO-108 最大的体积的更多相关文章

  1. Java 蓝桥杯 算法训练(VIP) 最大体积

    最大体积 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积. 假如每个物品有无限件可用,那么有些体积是永远也装不出来的. 为了尽量装满背包,附中的OIER想要研究一下 ...

  2. Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)

    试题 算法训练 猴子吃包子 问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉 ...

  3. Java实现蓝桥杯 算法训练 大等于n的最小完全平方数

    试题 算法训练 大等于n的最小完全平方数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输出大等于n的最小的完全平方数. 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平 ...

  4. 蓝桥杯算法训练 java算法 表达式求值

    问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 - ...

  5. java实现 蓝桥杯 算法训练 Password Suspects

    问题描述 在年轻的时候,我们故事中的英雄--国王 Copa--他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好记又难以破解.后来,他才知道这种密码是一个长度为奇数 ...

  6. 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)

    算法训练 Torry的困惑(基本型) 时间限制:1.0s   内存限制:512.0MB      问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...

  7. 蓝桥杯 算法训练 区间k大数查询(水题)

    算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...

  8. 蓝桥杯--算法训练 区间k大数查询

                                                                                 算法训练 区间k大数查询   时间限制:1.0 ...

  9. 蓝桥杯 算法训练 ALGO-116 最大的算式

    算法训练 最大的算式   时间限制:1.0s   内存限制:256.0MB 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量 ...

  10. 蓝桥杯算法训练 区间k大数查询

    算法训练 区间k大数查询   问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个 ...

随机推荐

  1. windchill系统——导航器v1.0:思维导图

    总图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/7b3fc783493788

  2. Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).

    Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). Git fet ...

  3. 在eclipse下使用maven的配置

    1 2 3 4 5 6 7 8 public class Shifty {     public static void main(String[] args) {         int i = 0 ...

  4. 【C#笔札】1 string类型(2)

    4> Trim whitespace Trim 也是string的一个方法节点 C#例子如下: C#中有Trim,TrimEnd 和TrimStart三种Trim节点,其中后两者无需介绍. 如上 ...

  5. Exception has been thrown by the target of an invocation 网站报错

    最近因为要做一个启动器,在使用WPF做UI的时候,发现有错误如下: 错误 1 未知的生成错误"此实现不是 Windows 平台 FIPS 验证的加密算法的一部分. 行 8 位置 3.&quo ...

  6. visual stdio 2012 c#学习笔记1

    visual stdio 2012 c#学习笔记1 1 我在安装过程中选择的是英文版本,不过刚入手,所以想先从中文菜单入手,所以需要安装中文语言包: microsoft的中文语言包下载地址为:http ...

  7. 第七届蓝桥杯C-B-10-最大比例/gcd变形

    最大比例 X星球的某个大奖赛设了M级奖励.每个级别的奖金是一个正整数.并且,相邻的两个级别间的比例是个固定值.也就是说:所有级别的奖金数构成了一个等比数列.比如:16,24,36,54其等比值为:3/ ...

  8. Go语言实现FastDFS分布式存储系统WebAPI网关

    前言 工作需要,第一次使用 Go 来实战项目. 需求:采用 golang 实现一个 webapi 的中转网关,将一些资源文件通过 http 协议上传至 FastDFS 分布式文件存储系统. 一.Fas ...

  9. Device Drivers Should Not Do Power Management

    有人对现有的电源管理提出了意见,认为驱动程序不应该做电源管理,paper地址在这里: http://www.ruf.rice.edu/~mobile/publications/xu2014apsys. ...

  10. 详述 SQL 中的 distinct 和 row_number() over() 的区别及用法

    1 前言 在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在 ...