小貓爬山 codevs4228

dfs(車) 那選完貓之後,怎麼寫dfs(car+1)?當前貓裝完了,要開始下一輛車了麼?
所以dfs(貓)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define ll long long 
using namespace std;
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
bool cmp(int x,int y)
{
    return x>y;
}
bool flag;
int n,w,deep,sum;
int c[20],b[20];
void dfs(int x)
{
    if(x==n+1){flag=1;return;}
    for(int i=1;i<=deep;i++)
        if(b[i]+c[x]<=w)
        {
            b[i]+=c[x];
            dfs(x+1);
            b[i]-=c[x];
            if(flag)return;
        }
    return;
}
int main()
{
    n=read();w=read();
    for(int i=1;i<=n;i++)c[i]=read(),sum+=c[i];
    sort(c+1,c+n+1,cmp);
    for(deep=sum/w;deep<=18;deep++)
    {
        dfs(1);
        if(flag)
        {
            printf("%d\n",deep);
            return 0;
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章