10分求调如何剪枝
查看原帖
10分求调如何剪枝
1235962
chen_1111楼主2025/6/30 14:09
#include<bits/stdc++.h>
using namespace std;
int n,m,mn=INT_MAX,k;
void dfs(int s,int r,int h,int ans,int v)
{
    if(s==m&&v==n)
    {
        mn=min(mn,ans+k*k);
        return;
    }
    if(s==m&&v!=n)
        return;
    v+=r*r*h;
    if(v>n)
        return;
    ans+=r*2*h;
    if(ans>mn)
        return;
    for(int i=r-1;i>=m-s-1;i--)
        for(int j=h-1;j>=m-s-1;j--)
            dfs(s+1,i,j,ans,v);
}
int main()
{
    cin>>n>>m;
    for(int i=n;i>=m;i--)
        for(int j=n;j>=m;j--)
            k=i,dfs(0,i,j,0,0);
    cout<<(mn==INT_MAX?0:mn);
}
2025/6/30 14:09
加载中...