1 // 写了挺久的说 = = 谢谢指导我的学长~ 2 // 弄懂之后还是不难的(记性不好啊= = 希望我不要太快忘了才好 ) 3 #include4 #include 5 #include 6 #define MAX 3010 7 using namespace std; 8 char dir[6][10]={ "front", "back", "left", "right", "top" , "bottom"}; 9 struct cube10 {11 int weight,top,bot,dir;12 void init(int w,int t,int b,int d)13 {14 weight=w; top=t; bot=b; dir=d;15 }16 }a[MAX];17 int f[MAX],path[MAX];18 void print(int x)19 {20 if(x==-1) return ;21 print(path[x]);22 printf("%d %s\n",a[x].weight,dir[a[x].dir]);23 }24 int main()25 {26 int n,cnt=0;27 int cl[6];28 while(scanf("%d",&n)!=EOF && n)29 {30 int sum=0;31 for(int i=0;i a[j].weight && a[i].top == a[j].bot && f[j]+1>f[i] ) // LIS 49 {50 f[i]=f[j]+1;51 path[i]=j;52 if(f[i]>mx) mx=f[i],p=i;53 }54 }55 }56 if(cnt) printf("\n"); 57 printf("Case #%d\n%d\n",++cnt,mx);58 print(p); 59 }60 return 0;61 }