165. 小猫爬山爆搜+剪枝

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了165. 小猫爬山爆搜+剪枝相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;
const int N=25;
int w[N],s[N],n,m,ans,len=0;
void dfs(int index)

    if(len>=ans) return;
    if(index==n)
    
        ans=min(ans,len);
        return;
    
    for(int i=0;i<len;i++)//枚举猫放在现有的那辆缆车上
    
        if(s[i]+w[index]<=m)
        
            s[i]+=w[index];
            dfs(index+1);
            s[i]-=w[index];
        
    
    s[len++]=w[index];//再开一个新的缆车
    dfs(index+1);
    s[--len]-=w[index];

int main(void)

    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>w[i];
    ans=n;
    dfs(0);
    cout<<ans;

以上是关于165. 小猫爬山爆搜+剪枝的主要内容,如果未能解决你的问题,请参考以下文章

165. 小猫爬山 有意思的 / bfs

[dfs] aw165. 小猫爬山(dfs剪枝与优化+好题)

DFS剪枝小猫爬山

DFS剪枝小猫爬山

DFS剪枝小猫爬山

小猫爬山