poj1190 生日蛋糕 dfs

2014-11-23 21:27:55 · 作者: · 浏览: 12


题意:生日蛋糕有m层,总体积是V。从下向上,每一层的半径r和高度h都是递减的。

给m、v,求最小的表面积s。(不算底面接地的面积)

题目链接:poj1190


剪枝都还没加。。样例输出都是错的。。。还没找到问题。。。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define inf 0x3f3f3f3f
using namespace std;

int ans,V,M,flag,s;

int dfs(int v,int m,int newr,int newh)
{
    int r,h,tmp,i;
    if(m==0)
    {
        flag=1;
        if(v==0&&sv) return 0;//依然大于剩余的v 那么一定不可能
    tmp-=(m*m*m);
    for(r=newr;r>=m;r--)
    {
        for(h=newh;h>=m;h--)
        {
            //for(i=0,tmp=0;itmp) break;//依然小于v 也不可能
            if(m==M) s+=r*(2*h+r);
            else s+=2*r*(h+r);
            if(s