装载问题回溯法

Posted luv_letters

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装载问题回溯法相关的知识,希望对你有一定的参考价值。

问题描述

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

输入格式

第一行有 2 个正整数 nn 和 cc。 nn 是集装箱数,cc 是轮船的载重量。接下来的 1 行中有 nn 个正整数,表示集装箱的重量。

输出格式

一行,1 个整数,即最大装载重量。

样例一

input

5 10
7 2 6 5 4

output

10

数据范围与约定

时间限制: 1s1s

内存限制: 256MB

 时间原因......以后补上题解,凑合着看......

我才不会说我不会

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int maxx;
 4 int ans;
 5 int n,c;
 6 int sz[10000];
 7 void ss(int i,int k=0){
 8     if(maxx>c) return ;
 9     if(k==i+1) {
10         ans=max(ans,maxx);
11         return ;
12     } 
13     if(maxx+sz[k]<=c){
14         maxx+=sz[k];
15         ss(i,k+1);
16         maxx-=sz[k];
17     }
18     ss(i,k+1);
19 }
20 int main(){
21     cin>>n>>c;
22     for(int i=1;i<=n;i++){
23         cin>>sz[i];
24     }
25     sort(sz+1,sz+n+1);
26     ss(n);
27     cout<<ans;
28     return 0;
29 }

 

以上是关于装载问题回溯法的主要内容,如果未能解决你的问题,请参考以下文章

装载问题

noj算法 装载问题 回溯法

五大基本算法——回溯法

算法设计与分析——回溯法算法模板

算法与程序设计:回溯法

0-1背包-回溯法