uva 10051 Tower of Cubes
2011-10-23 00:58
405 查看
题意:给n个六面体,接下去n行,每行有6个数字,表示前,后,左,右,上,下面的颜色。每个六面体自上而下重量都是增加的。叠放的规则是六面体的上面一定要放重量比它小的。并且接触的面的颜色要相同。输出能叠放几个,并且把它们哪一个朝上输出。
定义map[i][j]为第i个六面体j面朝上的最大高度。用一个结构体route保存路径。
定义map[i][j]为第i个六面体j面朝上的最大高度。用一个结构体route保存路径。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=505; int n,map [10],change[6]={1,0,3,2,5,4}; bool vis [10]; int dp(int,int); void print_ans(int,int,int); struct ROUTE { int x,y; void fun(int a,int b){x=a;y=b;} }route [6]; struct node { int face[6],weight; void fun(int a,int b,int c,int d,int e,int f,int h) { face[0]=a;face[1]=b;face[2]=c;face[3]=d; face[4]=e;face[5]=f;weight=h; } }cube ; int main() { int t_cnt=0; while(scanf("%d",&n)!=EOF) { if(n==0) break; memset(map,0,sizeof(map)); memset(route,0,sizeof(route)); memset(vis,0,sizeof(vis)); int imax=0,x,y; for(int i=0;i<n;i++) { int a,b,c,d,e,f; scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f); cube[i].fun(a,b,c,d,e,f,i+1); } for(int i=0;i<n;i++) { for(int j=0;j<6;j++) { int temp=dp(i,j); if(imax<temp) { imax=temp;x=i;y=j; } } } if(t_cnt!=0) puts(""); printf("Case #%d\n%d\n",++t_cnt,imax); print_ans(x,y,imax); } return 0; } int dp(int x,int y) { if(vis[x][y]) return map[x][y]; else { for(int i=x+1;i<n;i++) { for(int j=0;j<6;j++) { if(cube[x].face[change[y]]==cube[i].face[j]) { int temp=dp(i,j)+1; if(temp>map[x][y]) { map[x][y]=temp; route[x][y].fun(i,j); } } } } vis[x][y]=1; map[x][y]=max(map[x][y],1); return map[x][y]; } } void print_ans(int x,int y,int cnt) { printf("%d ",x+1); if(y==0) puts("front"); else if(y==1) puts("back"); else if(y==2) puts("left"); else if(y==3) puts("right"); else if(y==4) puts("top"); else puts("bottom"); if(cnt==1) return; else print_ans(route[x][y].x,route[x][y].y,cnt-1); }
相关文章推荐
- UVA - 10051 Tower of Cubes DAG最长路径
- UVA 10051 Tower of Cubes
- uva 10051 Tower of Cubes
- uva 10051 Tower of Cubes
- UVa 10051 - Tower of Cubes
- UVA 10051 - Tower of Cubes(dp + DAG最长路径)
- UVA 10051 - Tower of Cubes(dp + DAG最长路径)
- UVA 10051 --Tower of Cubes +dp
- The Tower of Babylon DAG上的动态规划+uva
- 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 (DP)
- UVA 437 The Tower of Babylon DP
- UVA 437 The Tower of Babylon
- UVa 437 - The Tower of Babylon
- Uva 437-The Tower of Babylon(DP)
- UVA437 - The Tower of Babylon - 动态规划
- UVA_437_The Tower of Babylon