扩大
缩小

装载问题【回溯法】

问题描述

有一批共 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 }

 

posted @ 2018-03-12 18:27  luv_letters  阅读(1263)  评论(0编辑  收藏  举报
AmazingCounters.com
博文导航目录