dag模型:有n個矩形,每個矩形用兩個整數a,b描述,表示長和寬,矩形(a,b)可以巢狀在矩形(c,d)中,當且僅當a小於c,b小於d或b小於c,a小於d。要解決的問題就是從眾多矩形中選出最多的矩形,使其可以按要求排成一列,若有多解,矩形編號的字典序要盡可能小。
分析:按照書上的分析很簡單易懂,也容易操作,只是有很多的細節需要注意,這個解法要好好學習,很多問題都會涉及最長或最短路徑問題
狀態轉移方程為:
d(i)=max
具體**:`
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxx=100;
int g[maxx][maxx];
struct juxing
;juxing ar[maxx];
int dp[maxx]; //dp[i]表示從i出發得到的最大長度
int n;
int dp(int i)
return ans;
}void printf_ans(int i)
}int main()
}for(int i=1;i<=n;i++) //建立鄰建圖
}for(int i=1;i<=n;i++)
int answer=0,flag=0;
for(int i=1;i<=n;i++)
整個**在列印方案有點問題,不過書中的這種方法很好用
void print_ans(int i) }
「`在解決這個問題上,按照書上的思路很好理解,但是具體實現時就有點難,自己的動手能力還不強,得多練,不過,我感覺如果每個問題都多問幾個問題,多去思考一些問題,對自己理解更有幫助,會更加明白都是套路!!!ok 第一篇部落格誕生,以後繼續寫,寫給自己看,自己比較菜,有些不對的地方,望各路大神指出
DAG上的動態規劃
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...
DAG 上的動態規劃
暫存 dag 上的動態規劃 訓練指南 大白書 2015年11月04日 16 42 48 閱讀數 1979 有向無環圖 dag,directed acyclic graph 上的動態規劃是學習動態規劃的基礎。很多問題都可以轉化為dag上的最長路 最短路或路徑計數問題。一 矩形巢狀 題目描述 有n個矩形...
DAG上的動態規劃
如需要課件ppt,聯絡我 dag 的定義 dag 意思是有向無環圖,所謂有向無環圖是指任意一條邊有方向,且不存在環路的圖。注 並非是一棵樹,邊數可以 經典例題 巢狀矩形 有n 個矩形,每個矩形可以用 ab來描述,表示長和寬。矩形 x ab 可以巢狀在矩形 y cd 中當且僅當 a或者b 相當於旋轉 ...