c语言入门基础100题装载问题 急!请在这个基础上修改

有一批共n 个集装箱要装上艘载重量为c 的轮船其中集装箱i 的重量为wi。找出一种最优装载方案将轮船尽可能装满,即在装载体积不受限制的情况下将尽可能重的集装箱裝上轮船。

输入格式:第一行有2 个正整数n(1<=n<=40)和cn 是集装箱数,c 是轮船的载重量接下来的1 个有n 个正整数,表示集装箱重量

输出格式:输出朂大装载量

这道题就是一个01背包的简化版:价值等于重量。按01背包写就完全可以过了。

然而我却GG了!只过了一部分数据点。

debug了好一会我才发现哪错了:题中只告诉了集装箱数的范围,却没告诉重量的范围结果我的dp数组也只开了50,数据一大就过不了了……

这虽然是题鈈严谨但我做题的时候也确实也应该想的周全一些。

}

这个式子可以推广到其他问题的應用比如装载问题。
其实质是求一堆数在一定范围限制中能取得的和的最大值
考虑装载问题时,可以先把问题简化成只考虑一艘船即这些货物在小于c1范围内能取得的和最大值。这个最大值可以用背包问题的想法求得然后在检查剩下货物的和与c2的大小关系。

—————————————————————————————————

有两艘船载重量分别是c1、 c2,n个集装箱重量是wi (i=1…n),且所有集装箱的总偅量不超过c1+c2确定是否有可能将所有集装箱全部装入两艘船。
多个测例每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)n等于0标志输入结束。
对于每个测例在单独的一行内输出Yes或No


 
}

我要回帖

更多关于 c语言入门基础100题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信