实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和
来源:互联网 发布:大数据用英语怎么说 编辑:程序博客网 时间:2024/05/19 03:44
public ArrayList<Box> createStackR(Box[] boxes,Box bottom)
{
int max_height=0;
ArrayList<Box> max_stack=null;
for(int i=0;i<boxes.length;i++)
{
if(boxes[i].canBeAbove(bottom))
{
ArrayList<Box> new_stack=createStackR(boxes,boxes[i]);
int new_height=stackHeight(new_stack);
if(new_height>max_height)
{
max_stack=new_stack;
max_height=new_height;
}
}
}
if(max_stack==null)
max_stack=new ArrayList<Box>();
if(bottom!=null)
max_stack.add(0,bottom);//插入箱堆底部
return max_stack;
}
public ArrayList<Box> createStackDP(Box[] boxes,Box bottom,HashMap<Box,ArrayList<Box>> atack_map)
{
if(bottom!=null && stack_map.containKey(bottom))
{
return stack_map.get(bottom);
}
int max_height=0;
ArrayList<Box> max_stack=null;
for(int i=0;i<boxes.length;i++)
{
if(boxes[i].canBeAbove(bottom))
{
ArrayList<Box> new_stack=createStackDP(boxes,boxes[i],stack_map);
int new_height=stackHeight(new_stack);
if(new_height>max_height)
{
max_stack=new_stack;
max_height=new_height;
}
}
}
if(max_stack==null) max_stack=new ArrayList<Box>();
if(bottom!=null) max_stack.add(0,bottom);
stack_map.put(bottom,max_stack);
return (ArrayList<Box>) max_stack.clone();
}
- 实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和
- 用n个宽d,高h,深d的箱子打出高度最高的箱子,下面的箱子的宽度,高度和深度必须大于上面的箱子
- 一个箱子的推箱子算法
- 实现盒子高度撑开,而且以最高的为高
- 程序员面试金典: 9.9 递归和动态规划 9.10求堆出箱子的最大高度
- 四个人与一个箱子的故事
- 四个人与一个箱子的故事
- 一个简单的推箱子游戏
- 简单的推箱子游戏的实现
- 实例,js实现的推箱子游戏
- 【Java】Java实现推箱子的小游戏
- 解决底部弹窗高度最高为半个屏幕高度,变动数据出现非半屏的bug
- JavaScript设置body高度为浏览器高度的方法
- 推箱子的AI算法
- 箱子与小球的问题!
- div标签的箱子分布
- 箱子的空间中量
- c语言的推箱子
- ios之SEL
- Tomcat配置 无需加项目名直接访问项目
- 利用Qt.locale显示本地化数据
- TDD+结对编程活动分享
- 一种新颖创新的办公室设计风格引领时尚的潮流
- 实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和
- 《C++primer(第五版)》学习之路-序
- 内存 地址 分配
- enq: TM - contention TM 等待事件的原因及模拟(表外键约束无索引导致)
- 取消文件夹拒绝访问
- 理解编译器在编译过程中做了什么
- OC之内存管理
- 数据结构与算法分析Java版练习1.13
- 在线调试方案的思考与实践