2014-03-20 04:15

题目:你有n个盒子,用这n个盒子堆成一个塔,要求下面的盒子必须在长宽高上都严格大于上面的。如果你不能旋转盒子变换长宽高,这座塔最高能堆多高?

解法:首先将n个盒子按照长宽高顺序排好序,然后动态规划,我写了个O(n^2)时间复杂度的代码。

代码:

 // 9.10 A stack of n boxes is form a tower. where every stack must be strictly larger than the one right above it.
// The boxes cannot be rotated.
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std; struct Box {
// width
int w;
// height
int h;
// depth
int d;
Box(int _w = , int _h = , int _d = ): w(_w), h(_h), d(_d) {}; bool operator < (const Box &other) {
if (w != other.w) {
return w < other.w;
} else if (h != other.h) {
return h < other.h;
} else {
return d < other.d;
}
};
}; int main()
{
int n, i, j;
Box box;
vector<Box> v;
vector<int> dp;
int result; while (scanf("%d", &n) == && n > ) {
v.resize(n);
for (i = ; i < n; ++i) {
scanf("%d%d%d", &v[i].w, &v[i].h, &v[i].d);
}
sort(v.begin(), v.end());
dp.resize(n);
for (i = ; i < n; ++i) {
dp[i] = v[i].h;
}
for (i = ; i < n; ++i) {
for (j = ; j < i; ++j) {
if (v[i].w > v[j].w && v[i].h > v[j].h && v[i].d > v[j].d) {
dp[i] = v[i].h + dp[j] > dp[i] ? v[i].h + dp[j] : dp[i];
}
}
}
result = dp[];
for (i = ; i < n; ++i) {
result = dp[i] > result ? dp[i] : result;
}
v.clear();
dp.clear();
printf("%d\n", result);
} return ;
}

最新文章

  1. UltralEdit 替换tips
  2. struts之类型转换
  3. NYOJ之Fibonacci数
  4. Sublime Text2 jedi插件离线安装
  5. dede调用第一张大图,非缩略图
  6. js中的call及apply
  7. 1055: [HAOI2008]玩具取名 - BZOJ
  8. 个人作业-Homework1感想
  9. sphinx2.8.8的配置文件
  10. js与android webview交互
  11. 2015 多校联赛 ——HDU5348(搜索)
  12. ngnix简单使用
  13. ASP.NET MVC Display Mode 移动端视图 配置对微信内置浏览器的识别
  14. logstash 学习小记
  15. python绝对路径相对路径函数
  16. 微信小程序开发——苹果手机领取卡券出现参数错误(安卓正常)
  17. Java Nashorn--Part 2
  18. Python3.5 学习十二 数据库介绍
  19. C#学习(1):类型约束
  20. HoloLens的显示分辨率有多少?

热门文章

  1. Java I/O 工作机制(一) —— Java 的 I/O 类库的基本架构
  2. OpenGL学习 Following the Pipeline
  3. IOS 自定义代理delegate方法
  4. POJ-3190 Stall Reservations---优先队列+贪心
  5. 百度Ueditor 图片上传无反应,显示上传0张,不能点确定
  6. 问题 C: B 统计程序设计基础课程学生的平均成绩
  7. 2017.10.28 针对Java Web应用中错误异常处理方法的运用
  8. IIS/IIS Express中遇到的证书问题
  9. Adobe CS2提供免费序列号
  10. Adobe Photoshop CS6下载安装