装载问题(load)

问题描述:

有一批共n 个集装箱要装上艘载重量为c 的轮船,其中集装箱i 的重量为wi。找出一种最

优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装

上轮船。

输入格式:

第一行有2 个正整数n(1<=n<=40)和c。n 是集装箱数,c 是轮船的载重量。接下来的1 个有

n 个正整数,表示集装箱重量。

输出格式:

输出最大装载量

输入样例:

5 10

7 2 6 5 4

输出样例:

  1. 10

****

 #include<iostream>

 #include<cstdlib>

 using namespace std;        

 int n,c,a[],i,m=;

 bool f[];

 void fa(int s,int t)

 {

          int i;

          if (s==c){cout<<s<<endl;exit();} //如果和要求的载重量相同那么一定是最优解

          if (s>c) {return;}    //如果已放的重量超载那就回溯剪掉这次的重新加

          if (s>m)m=s;  //m表示最大重量如果新方法可使重量大于原先的重量那么更新最大重量

          //if (t>n){cout<<m<<endl;exit(0);}

          for (i=;i<=n;i++)  //循环每一个物体

            if (f[i])  //如果这个物体没有被放

            {

                 f[i]=false;   //那么放这个物体并且把这个物体标记为已放

                 s+=a[i];  //重量更新

                 fa(s,t+);  //再次判断这个物体是否还可以再加 变的更大

                 s-=a[i];   //如果不能剪掉这一次然后重新加,并且把这个物体放回去标记为待放

                 f[i]=true;

            }

 }

 int main()

 {

          cin>>n>>c;

          for (i=;i<=n;++i)cin>>a[i];

          for (i=;i<=n;++i)f[i]=true;   //表示物体待放

          fa(,);      //s表示已放的重量

         cout<<m<<endl;

          return ;

 }

先把所有物体设为待放,然后一个一个使满足要求就继续并且更新最大值,不满足要求返回重新加。

***一开始的时候我是循环从i个数加到第j个数字,若加上去的数离c更近就保存这个数,如果比c大就变回加之前的数最后把保存下来的最大值输出。样例是过了。可能是面对其他的数据会有遗漏的可能性吧。

装载问题(load)的更多相关文章

  1. 使用 Hive装载数据的几种方式

    装载数据 1.以LOAD的方式装载数据 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION( ...

  2. Java编译及装载

    Java类加载机制 JVM将类加载过程划分为三个步骤:装载.链接和初始化. 装载(Load):装载过程负责找到二进制字节码并加载至JVM中,JVM通过类的全限定名(com.bluedavy. Hell ...

  3. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

  4. Java类加载器总结

    1.类的加载过程   JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: 1) 装载:查找并加载类的二进制数据: 2)链 ...

  5. Linux Dynamic Shared Library && LD Linker

    目录 . 动态链接的意义 . 地址无关代码: PIC . 延迟版定(PLT Procedure Linkage Table) . 动态链接相关结构 . 动态链接的步骤和实现 . Linux动态链接器实 ...

  6. VQ结合SVM分类方法

    今天整理资料时,发现了在学校时做的这个实验,当时整个过程过重偏向依赖分类器方面,而又很难对分类器性能进行一定程度的改良,所以最后没有选用这个方案,估计以后也不会接触这类机器学习的东西了,希望它对刚入门 ...

  7. Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

    词典的格式设计 词典中所保存的信息主要是三部分: Term字符串 Term的统计信息,比如文档频率(Document Frequency) 倒排表的位置信息 其中Term字符串如何保存是一个很大的问题 ...

  8. PayPal 高级工程总监:读完这 100 篇文献,就能成大数据高手

    原文地址 开源(Open Source)对大数据影响,有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用:另一方面,开源也给大数据技术构 ...

  9. BI (商业智能)

    BI (商业智能) 编辑 商业智能(BI,Business Intelligence). BI(Business Intelligence)即商务智能,它是一套完整的解决方案,用来将企业中现有的数据进 ...

随机推荐

  1. SNMP学习笔记之Linux服务器SNMP常用OID

    收集整理一些Linux下snmp常用的OID,用做服务器监控很不错. 应用示例 查看服务器1分钟平均负载: snmpwalk -v1 -c public 127.0.0.1 .1.3.6.1.4.1. ...

  2. bzoj5470 / P4578 [FJOI2018]所罗门王的宝藏

    P4578 [FJOI2018]所罗门王的宝藏 设第$i$行上的值改变了$r1[i]$,第$j$列上的值改变了$r2[i]$ 显然密码$(i,j,c)=r1[i]+r2[j]$ 对于同一列上的两个密码 ...

  3. 20145220韩旭飞《网络对抗》实验九:web安全基础实践

    基础问答 (1)SQL注入攻击原理,如何防御 原理:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串. 防御: 利用输入规则限制进行防御,不允许特殊字符输入 (2)XSS攻击的原理,如 ...

  4. 20145303刘俊谦 Exp7 网络欺诈技术防范

    20145303刘俊谦 Exp7 网络欺诈技术防范 1.实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击,arp入侵攻击和DNS欺骗攻击 公共wifi点上的攻击. ...

  5. 20145318《网络对抗》Web应用

    20145318<网络对抗>Web应用 基础问题回答 (1)什么是表单 在网页中负责信息采集,在网页中用户输入信息,通过表单能够提交到后台进行相应的处理 (2)浏览器可以解析运行什么语言 ...

  6. 20145335郝昊《网络攻防》Exp4 Adobe阅读器漏洞攻击

    20145335郝昊<网络攻防>Exp4 Adobe阅读器漏洞攻击 实验内容 初步掌握平台matesploit的使用 有了初步完成渗透操作的思路 本次攻击对象为:windows xp sp ...

  7. sqlite3 的一些整理和补充

    一,sqlite3数据库打开时的返回值及其所代表的含义 返回值 描述 返回值 描述 SQLITE_OK=0 返回成功 SQLITE_FULL=13 数据库满,插入失败 SQLITE_ERROR=1 S ...

  8. linux下获取本机的获取内网和外网地址

    1.获取内网地址(私有地址) ifconfig -a 2.获取外网地址(公网地址) curl members.3322.org/dyndns/getip

  9. spring boot 使用@ConfigurationProperties

    有时候有这样子的情景,我们想把配置文件的信息,读取并自动封装成实体类,这样子,我们在代码里面使用就轻松方便多了,这时候,我们就可以使用@ConfigurationProperties,它可以把同类的配 ...

  10. [Err] 1111 - Invalid use of group function

    本文为博主原创,未经允许不得转载: 初衷,本想通过group by sql语句查询出不同id下总数在一定范围内的数据,所以产生如下的sql,及错误sql AND STATDATE < ' GRO ...