#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 200
using namespace std;
struct
node
{

int
x,y,z;
};

int
cmp(node a,node b)
{

if
(a.x==b.x) return a.y<b.y;
return
a.x<b.x;
}

int
mymax(int x,int y)
{

if
(x>y) return x;
return
y;
}

int
main()
{

int
n;
int
Case=;
while
(cin>>n&&n)
{

node fuck[maxn];
int
dp[maxn];
memset(dp,,sizeof(dp));
int
ret=;
while
(n--)
{

int
x,y,z;
cin>>x>>y>>z;
fuck[ret].x=x,fuck[ret].y=y,fuck[ret++].z=z;
fuck[ret].x=x,fuck[ret].y=z,fuck[ret++].z=y;
fuck[ret].x=y,fuck[ret].y=x,fuck[ret++].z=z;
fuck[ret].x=y,fuck[ret].y=z,fuck[ret++].z=x;
fuck[ret].x=z,fuck[ret].y=x,fuck[ret++].z=y;
fuck[ret].x=z,fuck[ret].y=y,fuck[ret++].z=x;
}

sort(fuck,fuck+ret,cmp);
dp[]=fuck[].z;
for
(int i=;i<ret;i++)
{

dp[i]=fuck[i].z;
for
(int j=;j<i;j++)
{

if
(fuck[j].x<fuck[i].x&&fuck[j].y<fuck[i].y)
{

dp[i]=mymax(dp[i],dp[j]+fuck[i].z);
}
}
}

//这里的dp只是算出了每个i对应的值 并没有算出最大的
int zz=dp[];
for
(int i=;i<ret;i++) if(zz<dp[i]) zz=dp[i];
printf("Case %d: maximum height = %d\n",++Case,zz);
}

return
;
}

最新文章

  1. JS倒计时执行操作
  2. this的使用
  3. 原生javascript效果:无缝滚动
  4. 基于xmpp openfire smack开发之smack类库介绍和使用[2]
  5. 基于java callable及future接口解决生产者消费者问题
  6. cf D. Alternating Current
  7. 移动端 常见布局CSS3的细节
  8. osx launchpad删除图标
  9. [翻译]初识SQL Server 2005 Reporting Services Part 4
  10. border-radius IE8兼容处理
  11. 博客迁移至 http://www.loveli.site
  12. SDK提交到CocoaPods
  13. Flask插件wtforms、Flask文件上传和Echarts柱状图
  14. Queue 队列的使用
  15. 转载一篇阿里云Terraform 开发指南
  16. Python——Sublime Text3编写Python的一些问题
  17. ARM-ili9325屏调试1--时序
  18. JavaScript对象复制(一)(转载)
  19. Java反射之如何判断类或变量、方法的修饰符(Modifier解析)
  20. ASCII对照表

热门文章

  1. k8s Ipvs 内部网络自动分配和内部网络一致ip地址,导致ip冲突
  2. SQL-W3School-基础:SQL DISTINCT 语句
  3. Python3中_和__的用途和区别
  4. Bootstarp学习
  5. MySQL表的创建与维护
  6. ubuntu安装以及卸载软件
  7. ASP.NET 拼多多用户登录授权后使用code去换取access_token
  8. 《精通并发与Netty》学习笔记(14 - 解决TCP粘包拆包(二)Netty自定义协议解决粘包拆包)
  9. redis-5.0.3 redis.conf详解
  10. CRLF——http response 拆分攻击(webgoat)