hdu1069 記憶化搜尋

2021-06-20 09:18:55 字數 732 閱讀 8685

此題思路還是比較清晰的,對於每個x,y,z,都會有三種情況,dp[ i ]表示把第i個放在最下面得到的最大高度,

狀態轉移方程為dp[i]=max( dp[i], dp[j]+height )  這裡的j要滿足能夠放在i上面,height為第i個矩形的高度

**如下:

#include#include#include#include#include#include#include#include#include#include#include#define n 100

#define eps 1e-9

#define p system("pause")

using namespace std;

struct node

a[n];

int vis[n],dp[n];

int n;

int dfs(int pos) //求dp[pos]

dp[pos]+=a[pos].z;

return dp[pos];

}int main()

{//freopen("input.txt","r",stdin);

//freopen("output.txt","w",stdout);

int i,s[3],count=1;

while(scanf("%d",&n)&&n)

{for(i=0;i

hdu 1069 記憶化搜尋 dp

題目鏈結 題意 有n種長方體,每個都有無數個,分別告訴你它們的長寬高,問最多能疊多高,要求是上面的長方體的地面積的長和寬都要比下面的長方體的小,長方體可以旋轉,就是說放的時候可以以任意一面作為底面積。思路 用a i j 來記錄第i種長方體的第j條邊的高,用dp i j 表示以第i個長方體為底且以第j...

HDU1069 猴子疊木塊

題目 研究人員有n種型別的塊,並且每種型別的塊都是無限制的。每個i型塊是具有線性尺寸 xi,yi,zi 的矩形固體。塊可以重新定向,使得它的三個維度中的任何兩個確定基座的尺寸,而另乙個尺寸是高度。他們想要確保通過堆放塊可能的最高的塔可以到達屋頂。問題在於,在建造塔架時,只能將一塊塊放置在另一塊的頂部...

HDU 1069 基礎動態規劃 排序

題意 給出n種立方體石頭 當且僅當一塊石頭的底部寬度長度都小於一塊石頭的時候才能放在上面 問最高能放多高?石頭不限數目 然而同樣一種石頭採用同樣的擺放方式 兩快相同石頭一定無法進行放置 所以 一塊石頭的一種擺放方式最多使用一次 進行一下排序 讓長與寬最小的放在最前面 然後就是可愛的dp模板了 inc...