摘要: 该题给定一个容器的体积,以及N个物品,每个物品有其要求的最少空间以及实际所占的空间 。 要我们判断是否可以把所有的物品全部放在里面,当然如果能够放进去也是需要一定的顺序的。最好的放置方法就是每次将物品中所占空间与实际空间差值最大的首先放进去。 现在我们来证明这个差值排序的正确性: 先申明几个变量的符号: CUR_MAX_V 当前的最大体积 ; CUR_NULL_V 当前的空余的体积 ;T_MAX_V 当前物品的所需的体积 ; T_REAL_V 当前物品的实际体积现在假设有一个无限大的空间,保证能够将所有的物品放入,考虑到当前的体积与即将放入的物品有如下关系: ( CUR_MAX_V ) ( . 阅读全文
posted @ 2011-07-18 21:30 沐阳 阅读(322) 评论(0) 推荐(1) 编辑
摘要: 该题的难点在于如何去处理掉等号,这里要用到并查集来处理相同的点,不要在输入的时候处理数据,一定要先将数据全部读取完再处理,这是因为相等的点的出现是不可预见的,很可能不能把相等的点的信息全部加到一个点的邻接表上去。这里说明两条定理:*如果一次入队入度为零的点大于1则说明拓扑排序序列不唯一*如果排序的总个数小于给定的个数,则说明存在回路这两种情况就对应了不同的错误,前者则是信息不完全,后者则是冲突。当然信息不完全不能够说明它不冲突。代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>#defi 阅读全文
posted @ 2011-07-18 10:04 沐阳 阅读(341) 评论(0) 推荐(0) 编辑