Java HdAcm1069
2024-09-05 05:28:37
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class Main { List<Block> blocks = null; public void inital(){
Scanner cin = new Scanner(System.in);
int n;
int m = 1;
while((n = cin.nextInt()) != 0){
blocks = new ArrayList<Block>();
for(int i = 0; i < n; i++){
int x = cin.nextInt();
int y = cin.nextInt();
int h = cin.nextInt(); if(x == y){
//x == y == z一种
if(y == h)
blocks.add(new Block(x, y, h, h));
//x == y != z三种
else {
blocks.add(new Block(x, x, h, h));
blocks.add(new Block(h, x, x, x));
blocks.add(new Block(x, h, x, x));
}
}
else{
//x == h != y三种
if(x == h){
blocks.add(new Block(x, x, y, y));
blocks.add(new Block(y, x, x, x));
blocks.add(new Block(x, y, x, x));
}
else if(y == h ){
blocks.add(new Block(x, y, y, y));
blocks.add(new Block(y, y, x, x));
blocks.add(new Block(y, x, y, y));
}
//x != y != h
else{
blocks.add(new Block(x, y, h, h));
blocks.add(new Block(x, h, y, y));
blocks.add(new Block(y, x, h, h));
blocks.add(new Block(y, h, x, x));
blocks.add(new Block(h, x, y, y));
blocks.add(new Block(h, y, x, x));
}
}
}
sort(blocks);
int maxH = 0;
for(int i = 0; i < blocks.size(); i++){
for(int j = 0; j < i; j++){
if(blocks.get(j).x < blocks.get(i).x && blocks.get(j).y < blocks.get(i).y){
blocks.get(i).dp = max((blocks.get(i).h + blocks.get(j).dp), blocks.get(i).dp);
}
maxH = max(blocks.get(i).dp, maxH);
}
}
System.out.println("Case " + (m++) + ": maximum height = " + maxH);
}
cin.close();
} public int max(int a, int b){
return a > b ? a : b;
} public void sort(List<Block> blocks){
boolean exchange;
for(int i = blocks.size() - 1; i > 0; i--){
exchange = false;
for(int j = 0; j < i; j++){
if(blocks.get(j).x > blocks.get(j+1).x ){
Block temp = blocks.get(j);
blocks.set(j, blocks.get(j+1));
blocks.set(j+1, temp);
exchange = true;
}
else if(blocks.get(j).x == blocks.get(j+1).x){
if(blocks.get(j).y > blocks.get(j+1).y){
Block temp = blocks.get(j);
blocks.set(j, blocks.get(j+1));
blocks.set(j+1, temp);
exchange = true;
}
}
}
if(!exchange){
return;
}
}
}
public static void main(String[] args) {
new Main().inital();
} class Block{
public int x;
public int y;
public int h;
public int dp;//dp指的是该块箱子放在最下面时此方案的最大的高度。
public Block(int x, int y, int h, int dp) {
this.x = x;
this.y = y;
this.h = h;
this.dp = dp;
} } }
最新文章
- Mac OS X下Sublime Text (V2.0.1)破解
- 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务
- codeforces 86D : Powerful array
- Linux系统如何查看CPU型号等
- 由单例模式学到:volatile关键字
- poi过滤操作后产生新的sheet
- 本原串(HDU 2197 快速幂)
- PHP系列目录
- maven(02)--简单的命令操作
- PAT甲级 1004 树
- spoj 1676 AC自动机+矩阵快速
- sql server 实现split功能 行转列
- [LeetCode&;Python] Problem 594. Longest Harmonious Subsequence
- 堆排序的Python实现
- PHP——emjoin表情存入数据库
- vue中v-show与v-if的区别
- oracle-ords
- 动态 hover 使用变相使用
- 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)
- Linux运维之shell脚本
热门文章
- .net core工具组件系列之Redis—— 第一篇:Windows环境配置Redis(5.x以上版本)以及部署为Windows服务
- eladmin-plus V2.0.0 发布,单表链式调用更丝滑
- WEB安全新玩法 [10] 防范竞争条件支付漏洞
- Apereo CAS 4.1 反序列化命令执行漏洞
- yum 卸载
- netty系列之:netty中的Channel详解
- 【网站公告】避免反对百度的限制措施:百度搜索过来的访问会自动禁用js权限
- Bypass D盾 Webshell
- 做Android开发怎么才能不被淘汰?
- 去除Windows-XP系统下的关机功能