UVA 437 - The Tower of Babylon (DAG)
2014-08-04 18:18
387 查看
一个立方体 任何一个边 都可以当高, 所以当输入一个立方体的时候 对应着 就相当于六个立方体
然后判断任意两个立方体 之间 的关系 (是否可以放其上面)
然后对某一个点开始遍历
求出最大的高 图的遍历~
然后判断任意两个立方体 之间 的关系 (是否可以放其上面)
然后对某一个点开始遍历
求出最大的高 图的遍历~
#include <cstdio> #include <algorithm> #include <iostream> #include <string> #include <map> #include <vector> #include <set> #include <cmath> #include <stack> #include <queue> #include <cstring> #define ll long long; #define maxn 1000 + 10 #define INF 100000000 using namespace std; struct ti{ int x,y,z; void f(int a,int b,int c){x = a, y = b, z = c;} }; ti s[maxn * 6]; int g[maxn * 6][maxn * 6]; int dp[maxn * 6]; int num; int solve(int i,int j){ if((s[i].x < s[j].x && s[i].y < s[j].y )) return 1; return 0; } int dfs(int u) { if(dp[u] != -1) return dp[u]; dp[u] = s[u].z; for(int i = 0; i < num; ++i) if(g[u][i]){ dp[u] = max(dp[u], dfs(i)+s[u].z); } return dp[u]; } int main (){ int n; int counts = 0; while(scanf("%d",&n) && n){ memset(dp,-1,sizeof(dp)); num = 0; for(int i = 0 ; i < n ;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); s[num++].f(a,b,c); s[num++].f(a,c,b); s[num++].f(b,a,c); s[num++].f(b,c,a); s[num++].f(c,a,b); s[num++].f(c,b,a); } for(int i = 0 ; i < num ; i++){ for(int j = i+1 ; j < num ; j++){ g[i][j] = solve(i,j); g[j][i] = solve(j,i); } } int he = -1; for(int i = 0 ; i < num ; i++){ dp[i] = dfs(i); he = max(he,dp[i]); } printf("Case %d: maximum height = %d\n",++counts,he); } return 0; }
相关文章推荐
- DP(DAG) UVA 437 The Tower of Babylon
- uva 437 The Tower of Babylon (DAG)
- UVa 437 The Tower of Babylon (DP&DAG)
- UVA 437 The Tower of Babylon (dp + DAG最长序列)
- The Tower of Babylon UVA - 437 (DAG上的动态规划变形,记忆化搜索)
- uva 437 The Tower of Babylon(DAG的DP)
- uva 437 The Tower of Babylon (DAG_变形 ,dp)
- UVA 437 The Tower of Babylon(DAG上的动态规划)
- UVA_437_The_Tower_of_the_Babylon_(DAG上动态规划/记忆化搜索)
- UVA 437 The Tower of Babylon
- uva 437 - The Tower of Babylon(DP)
- UVA 437 - The Tower of Babylon 动规
- uva437 - The Tower of Babylon(动规,记忆化搜索)
- UVa 437 - The Tower of Babylon
- uva 437 - The Tower of Babylon
- UVa 437 - The Tower of Babylon
- uva 437 The Tower of Babylon
- UVA 437 The Tower of Babylon【LIS变形+O(n2)算法】
- UVa 437 - The Tower of Babylon LIS
- UVA 437 - The Tower of Babylon