zoj 1093 Monkey and Banana

来源:互联网 发布:java工程师资格证 编辑:程序博客网 时间:2024/05/21 13:22
#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;typedef struct{     int x;     int y;     int h;     }edge;edge block[181];int cmp(edge a1,edge a2){     if(a1.x!=a2.x)          return a1.x<a2.x;     else if(a1.y!=a2.y)          return a2.x<a2.y;     else           return a1.h<a2.h;     }int main(){     int n,i,j,a[3];     int t=0;     while(scanf("%d",&n)&&n)     {                   for(i=0;i<n;i++)          {               scanf("%d%d%d",&a[0],&a[1],&a[2]);                sort(a,a+3);               block[i*3].x=a[0];               block[i*3].y=a[1];               block[i*3].h=a[2];               block[i*3+1].x=a[0];               block[i*3+1].y=a[2];               block[i*3+1].h=a[1];               block[i*3+2].x=a[1];               block[i*3+2].y=a[2];               block[i*3+2].h=a[0];              }           sort(block,block+n*3,cmp);          for(i=0;i<n*3;i++)          {               int max=0;               for(j=0;j<i;j++)//找最大上升子序列               {                    if(block[j].x<block[i].x&&block[j].y<block[i].y&&block[j].h>max)                         max=block[j].h;                    }                    block[i].h+=max;          }           int maxh=0;             for(i=0;i<n*3;i++)          {               if(block[i].h>maxh)                    maxh=block[i].h;          }          t++;          printf("Case %d: maximum height = %d\n",t,maxh);               }       system("pause");       return 0;}

原创粉丝点击