The Tower of Babylon

就是给定一个三个值作为立方体的长宽高三个属性(故给定一个就有三种组合方式)
然后底完全大于下边的就可以放上去(就是长宽都严格大于下边的)
求最高的高度

就是先将其排个序,判断是否能放上。dp[i]代表以i为顶的最高的高度,状态转移方程为:

 if(L[i].chang>L[j].chang&&L[i].kuan>L[j].kuan)                    dp[i]=max(dp[i],dp[j]+L[i].gao);
可以结合我之前转发的DAG来看DAG上的动态规划,虽然这道题不需要。

代码:
#include
using namespace std;
int dp[1010];
struct node
{
    int chang,kuan,gao;
}L[1010];
bool cmp(node a,node b)
{
        return a.chang*a.kuanL[j].chang&&L[i].kuan>L[j].kuan)
                    dp[i]=max(dp[i],dp[j]+L[i].gao);
                }
                //cout<

你可能感兴趣的:(DP_普通dp)