hdu 1069
来源:互联网 发布:sql验证主键约束 编辑:程序博客网 时间:2024/05/16 05:28
//终于AC了,郁闷了好久
//其实是求最大递减子序列
//长方体要考虑三个面
#include<iostream>//2315666 2010-04-08 23:56:20 Accepted 1069 0MS 244K 1227 B C++ 悔惜晟
#include<cstdio>
#include<algorithm>
#include<string>
using namespace std;
struct stu
{
int x;
int y;
int z;
}df[95];
int cmp(stu a, stu b)
{
if(a.z != b.z )
return a.z > b.z;
else if(a.y == b.y)
return a.x > b.x;
else
return a.y > b.y;
}
int main()
{
int n, i, j, sum[95];
int num[4];
int t = 1;
while(scanf("%d", &n) != EOF && n)
{
int k = 1;
memset(df, 0, sizeof(df));
for(i = 1; i <= n; i++)
{
scanf("%d %d %d", &num[0], &num[1], &num[2]);
//abc(df[i].x, df[i].y, df[i].z);
sort(num, num + 3);//这里处理很好
df[k].x = num[0]; df[k].y = num[1]; df[k].z = num[2]; k++;
df[k].x = num[1]; df[k].y = num[0]; df[k].z = num[2]; k++;
df[k].x = num[2]; df[k].y = num[0]; df[k].z = num[1]; k++;
}
sort(&df[1], &df[1] + k, cmp);
memset(sum, 0, sizeof(sum));
int max1;
int x;
sum[1] = df[1].x;
max1 = -11;
for(i = 2; i < k; i++)
{
x = 0;//把这里赋值成x = -1了,就一直错
for(j = 1; j < i; j++)
{
if(df[i].y < df[j].y && df[i].z < df[j].z && sum[j] > x)
x = sum[j];
}
sum[i] = df[i].x + x;
if(sum[i] > max1)
max1 = sum[i];
}
printf("Case %d: maximum height = %d/n", t++, max1);
}
}
- hdu 1069
- HDU 1069
- HDU 1069
- HDU 1069
- HDU 1069
- hdu 1069
- hdu 1069
- hdu 1069
- HDU 1069
- hdu 1069
- hdu 1069
- hdu 1069
- hdu 1069
- HDU 1069
- hdu 1069
- hdu-1069
- hdu 1069
- HDU 1069
- in子查询、exists子查询、连接,效率的探讨
- latex 章节 行间距等控制
- 制作一张镜像光盘可以自动安装linux系统
- 基于qq2440开发平台的uboot移植(1)
- Delphi源程序格式书写规范
- hdu 1069
- VNC服务的配置
- ANT 环境安装
- 创建基于grub的小型Linux安装光盘
- 关于基于XOR的加密算法,我想到了更好的方法
- JS
- DELPHI中的快捷方式一览(完全正式版)
- firefox编译
- ZOJ 1889