DFS之剪枝与优化--小猫爬山

DFS之剪枝与优化--小猫爬山_第1张图片

 

 思路:对小猫的数量和车箱数进行bfs,一旦小猫的数量达到n,就统计ans的数量,如果当前车的剩余重量无法再承受任意一个猫的重量,那么我们将车辆数+1来保证小猫能够下山。

#include
using namespace std;
int a[100010];
int ans=20;
int sum[100010];
int n,m;
void dfs(int u,int k)
{
    //最优剪枝法
    if(k>=ans)
    {
        return;   
    }
    if(u==n)
    {
        ans=k;
        return;
    }
    for(int i=0;i>n>>m;
    for(int i=0;i>a[i];
    }
    sort(a,a+n);
    reverse(a,a+n);
    dfs(0,0);
    cout<

 

你可能感兴趣的:(ACM,深度优先,剪枝,算法)