hdu1069 Monkey and Banana

来源:互联网 发布:oracle数据库发展历史 编辑:程序博客网 时间:2024/05/24 05:03

点击打开链接

#include <iostream>#include <algorithm>#include <stdio.h>#include <cmath>#include <stdlib.h> using namespace std;struct ac{    int x,y,z,high,dp;} d[205];bool cmp(ac a,ac b){    if(a.x!=b.x)        return a.x<b.x;    return a.y<b.y;}int main(){    int n,ans,k;    int x,y,z;    int t=0;    while(cin>>n)    {        if(n==0)            break;        k=0;        for(int cas=1;cas<=n;cas++)        {            cin>>x>>y>>z;            if(x==y)///            {                if(y==z)                {                    d[k].x=x,d[k].y=y,d[k].z=z,d[k].dp=d[k].z,k++;                }                else                {                    d[k].x=x,d[k].y=y,d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=x,d[k].y=z,d[k].z=y,d[k].dp=d[k].z,k++;                    d[k].x=z,d[k].y=x,d[k].z=y,d[k].dp=d[k].z,k++;                }            }            else            {                if(x==z)                {                    d[k].x=x,d[k].y=z,d[k].z=y,d[k].dp=d[k].z,k++;                    d[k].x=x,d[k].y=y,d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=y,d[k].y=x,d[k].z=z,d[k].dp=d[k].z,k++;                }                if(y==z)                {                    d[k].x=x, d[k].y=y, d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=y, d[k].y=x, d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=y, d[k].y=z, d[k].z=x,d[k].dp=d[k].z,k++;                }                else                {                    d[k].x=x,d[k].y=y,d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=y,d[k].y=x,d[k].z=z,d[k].dp=d[k].z,k++;                    d[k].x=z,d[k].y=x,d[k].z=y,d[k].dp=d[k].z,k++;                    d[k].x=z,d[k].y=y,d[k].z=x,d[k].dp=d[k].z,k++;                    d[k].x=x,d[k].y=z,d[k].z=y,d[k].dp=d[k].z,k++;                    d[k].x=y,d[k].y=z,d[k].z=x,d[k].dp=d[k].z,k++;                }            }            sort(d,d+k,cmp);            ans=0;            for(int i=0;i<k;i++)            {                for(int j=0;j<i;j++)                {                    if(d[i].x>d[j].x&&d[i].y>d[j].y&&d[i].dp<d[j].dp+d[i].z)                    {                        d[i].dp=d[j].dp+d[i].z;                    }                }                ans=max(ans,d[i].dp);            }        }        cout<<"Case "<<++t<<": maximum height = "<<ans<<endl;    }    return 0;}


0 0
原创粉丝点击