#include <cstring> #include <iostream> #include <algorithm>using namespaceStd;intTmp[ -][3];intDp[ -];classNode{ Public:intX;intY;intH;BOOLoperator< (ConstNode&N)Const {if(X==N.X)returnY<N.Y;Else returnX<N.X; }};Node arr[ -];intSe[ -][2];intMain(){intN;intSign=0; while(Cin>>N&&N!=0) {Sign++;intNum=0;Memset(Dp,0,sizeof(Dp)); for(intI=0;I<N;I++) {Cin>>Tmp[I][0]>>Tmp[I][1]>>Tmp[I][2];Sort(Tmp[I],Tmp[I]+3);Arr[Num].X=Tmp[I][2];Arr[Num].Y=Tmp[I][1];Arr[Num].H=Tmp[I][0];Num++;Arr[Num].X=Tmp[I][1];Arr[Num].Y=Tmp[I][0];Arr[Num].H=Tmp[I][2];Num++;Arr[Num].X=Tmp[I][2];Arr[Num].Y=Tmp[I][0];Arr[Num].H=Tmp[I][1];Num++; }Sort(Arr,Arr+Num); for(intI=0;I<Num;I++) {Dp[I]=Arr[I].H; for(intJ=0;J<I;J++)if(Arr[I].X>Arr[J].X&Arr[I].Y>Arr[J].Y)Dp[I]=Max(Dp[J]+Arr[I].H,Dp[I]); }intMi=0; for(intI=0;I<Num;I++) {if(Mi<Dp[I])Mi=Dp[I]; }cout<<"Case"<<Sign<<": Maximum height ="<<Mi<<Endl; }return0;}
Maximum sub-sequence deformation--two-dimensional belt weight O (n*n) HDU1069