装载问题(回溯_子集树)

摘要:
时间限制:1000ms内存限制:10000K总时间限制:3000ms描述:有两艘船承载能力为c1和c2,n个集装箱重量为wi(i=1…n),所有集装箱的总重量不超过c1+c2。确定是否可以将所有集装箱装载到两艘船上。第一行是c1、c2和n一次;在第二行中,n个整数表示wi(i=1…n等于0,表示输入的结束。输入示例:7828779288000输出示例:YesNo#include<studio.h>intc1,c2,n,w[10];//要输入的数据intweight=0,max=0;voidsearch//0,1,2…n{if{if//如果//更多的数据可以降到船max=weight;}否则{if//取容器{weight+=w[m];search(m+1);weight-=w[m];}其权重为w[m]搜索(m+1);//不要拿重量为w[m]}intmain()的集装箱{inti,sum=0;scanf;//船1和船2的载荷c1,c2,以及集装箱数量nfile(n!

时限:1000ms 内存限制:10000K 总时限:3000ms

描述:

有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。

输入:

多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。

输出:

对于每个测例在单独的一行内输出Yes或No。

输入样例:

7 8 2
8 7
7 9 2
8 8
0 0 0

输出样例:

Yes

No

#include<stdio.h>
int c1,c2,n,w[10];//待输入数据
int weight=0,max=0;
void search(int m)//0,1,2...n
{
    if(m==n)
    {    if(weight<=c1 )//船一放得下
           if(weight>=max)//能放更多到船一
                 max=weight;
    }
    else{   if(weight+w[m]<=c1)//取重量为w[m]的集装箱(满足取的条件)
        {   weight +=w[m];
            search(m+1);
            weight -=w[m];
        }
        search(m+1);//不取重量为w[m]的集装箱(不满足取的条件或满足也不取)
}
}
intmain()
{
    int i,sum=0;
    scanf("%d%d%d",&c1,&c2,&n);//船一,船二的载重c1,c2,集装箱的个数n    
    while(n!=0)
    {
        for(i=0;i<n;i++)
        {    scanf("%d",&w[i]);//每个集装箱重量
            sum += w[i];//集装箱总重量
}
        search(0);        
        if(sum-max<=c2)
            printf("Yes\n");
        elseprintf("No\n");

        max=0;
        sum=0;
        scanf("%d%d%d",&c1,&c2,&n);    
    }
    return 0;
}

免责声明:文章转载自《装载问题(回溯_子集树)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML5 文件处理之FileAPI简介整理ubuntu mysql允许root用户远程登录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

四分位数

四分位数是统计学里一个很重要的概念,实际应用中,所画出来的箱图,就使用到了这个概念,只有懂了四分位的概念才能看懂箱图所表达的意思。我这里通过一个实际的案例来说明四分位数的求取过程。首先我们看下数据的情况,如下图所示,数据的总个数为10个1、在求取四分位数据时,首先必须做的是要对数据进行升序排序,如下图。例如:n的值为5、9、13等等,就是可以在数列中直接找到...

uniapp——自定义input清除事件

效果图如下:HTML:接受数字的人的姓名:˂textclass=“iconfonti...

SAP OBA1 外币评估是基于财务目的,为了不影响报表而做的估算值,在月末进行评估,在下月初进行冲回。

评估报告按行项目显示结果。4.评估策略外币的未清项评估有三种策略:1)期末评估,下期初冲回。因此目前每年底改变外币汇率时进行外币余额和未清项的评估,不冲回。②资产负债表指定日,一般是一年的最后一天。③资产负债表准备评估。如果选择该项,则视为年结评估,不能产生冲销凭证。外币未清项评估是按借贷分别统计后做的调整凭证。...

基于智能网卡(Smart Nic)的Open vSwitch卸载方案简介

SmartNic技术的初衷是以比普通CPU低得多的成本支持各种虚拟化功能,如sriov、overlay/decap和卸载一些vSwitch处理逻辑。目前,业界还没有完美的SmartNic解决方案来解决传统的vSwitch性能瓶颈,每种解决方案的实施方式也各不相同。没有统一的解决方案。图1.不同SmartNic架构的比较。2.基于SmartNic的OVS卸载方...

Linux系统添加永久静态路由的方法

按照Linux启动的顺序,rc本地的内容在Linux中的所有服务启动后执行。也就是说,local的内容在netfs之后执行。也就是说,当netfs启动时,不会添加服务器上的静态路由,因此无法成功装载netfs。...

antd中,popover 不同情境下设置不同背景图,无法设置className的情况

于是就想通过设置不同的status值来添加不同的className,以设置.ant-popover-inner的样式来设置背景图,当然,这样做有一个不完美的就是不能一步到位的全部改变,需要手动更改.ant-popover-placement-bottom˃.ant-popover-content˃.ant-popover-arrow来替换那个角角的值。问题就...