uva10051(最长上升子序列 + 路径打印)
2014-11-01 13:27
357 查看
题目的意思就是有很多歌立方体,每个立方体六个面都涂有颜色.
要把他们叠起来.要求是序号小的在上面 ,并且一个立方体要叠在一个上面,必须相接的那个面颜色相同..
做法就是把一个立方体,当做6个存起来.然后找最长上升子序列..
并递归打印路径.
要把他们叠起来.要求是序号小的在上面 ,并且一个立方体要叠在一个上面,必须相接的那个面颜色相同..
做法就是把一个立方体,当做6个存起来.然后找最长上升子序列..
并递归打印路径.
#include<stdio.h> #include<string.h> const int N = 505; struct cube { int t,b; int w; }cu[6 * N]; int f[6 * N]; int link[6 * N]; int num; char dis[6][7] = {"front" , "back" ,"left" , "right" , "top","bottom" }; void print(int pos) { int dir = pos % 6 ; int n = pos / 6 + 1; if (f[pos] == 1) { printf("%d %s\n",n ,dis[dir]); return ; } print(link[pos]); printf("%d %s\n" ,n ,dis[dir]); } int main () { int t ; int cas = 1; bool first = true; while (scanf("%d",&t) && t) { if(!first) { printf("\n"); } else { first = false; } num = 0; int a,b; for (int i = 1 ; i <=t ;i++) { for (int j = 0 ; j < 3 ;j++) { scanf("%d%d",&a,&b); cu[num].b = b; cu[num].t = a; cu[num++].w = i; cu[num].b = a; cu[num].t = b; cu[num++].w = i; } } int m = 0; int res; memset(link , 0 ,sizeof(link)); for (int i = 0 ; i < num ;i++) { f[i] = 1; for (int j = 0 ; j < i ;j++) { if (cu[i].t == cu[j].b && cu[i].w > cu[j].w && f[j] + 1 > f[i]) { f[i] = f[j] + 1; link[i] = j; } } if (f[i] > m) { m = f[i]; res = i; } } printf("Case #%d\n",cas++); printf("%d\n",m); print(res); } }
相关文章推荐
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- 【最长上升子序列 && 输出路径】HDU - 1160 FatMouse's Speed
- 最长单调递增子序列模板和 打印路径
- 计蒜客 求数组的最长递减子序列(nlogn+路径打印)
- UVA-10635 J [最长上升子序列]
- UVA 10051 - Tower of Cubes(dp + DAG最长路径)
- UVA - 10599 Robots(II)(最长上升自序列)
- uva 1471 - Defense Lines (最长上升子序列变形)
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
- ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)
- HDOJ 题目1160 FatMouse's Speed(最长上升子序列,输出路径)
- UVALive 7374 Racing Gems (最长上升子序列--二分法)
- hdu 1160 最长上升子序列 + 记录路径
- UVA 10051 Tower of Cubes(最长上升子序列)
- hdu 1160 FatMouse's Speed (最长上升子序列 + 记录路径)
- uva1471 - Defense Lines (最长上升子序列变形)
- UVa 10051 Tower of Cubes(DP 最长序列)
- J - Virus UVA - 12511——最长上升递增子序列
- J - Virus UVA - 12511——最长上升递增子序列
- UVA 10051 - Tower of Cubes(dp + DAG最长路径)