码迷,mamicode.com
首页 > 其他好文 > 详细

CODEVS 4228 小猫爬山

时间:2018-08-25 15:31:46      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:main   none   翻转   onclick   处理   scan   stack   +=   gif   

技术分享图片
//By DXY 2018.04.27
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define maxn 100000
int n,m,ans;
int d[maxn],v[maxn];
void dfs(int now,int cnt)//处理第now只猫,已经租了cnt辆车 
{
    if(cnt>=ans)//剪枝,不可能更新最优解 
    {
        return ;
    }
    if(now==n+1)//比较并更新最优解 
    {
        ans=min(ans,cnt);
        return ;
    }
    for(int i=1;i<=cnt;i++)
    {
        if(d[i]+v[now]<=m)//如果能装就装 
        {
            d[i]+=v[now];
            dfs(now+1,cnt);
            d[i]-=v[now];//回溯,还原现场 
        }
    }
    d[cnt+1]=v[now];
    dfs(now+1,cnt+1);//不能装下,再租一辆 
    d[cnt+1]=0;//回溯,还原现场 
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    sort(v+1,v+1+n);//从小到大排序 
    //较重的比较轻的更难运送,按递减排序 
    reverse(v+1,v+1+n);//翻转函数,把函数变成了从大到小排序
    ans=n;//最多需要n辆 
    dfs(1,0);
    cout<<ans<<endl;
    return 0;
}
View Code

 

CODEVS 4228 小猫爬山

标签:main   none   翻转   onclick   处理   scan   stack   +=   gif   

原文地址:https://www.cnblogs.com/Dxy0310/p/9534219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!