HDU 1257 最少拦截系统(动态规划)
2015-08-12 16:04
330 查看
题目链接:Click here
思路:保存下每一个拦截系统目前可以拦截的最大高度,每输入一个高度,就与之比较,如果某个最大拦截高度大于输入的高度,将之替换;如果找不到,就新建一个拦截系统。
这个代码感觉不是特别严谨,想了半天就是想不出哪个数据可以卡住,但是感觉肯定有,求大神指点。
思路:保存下每一个拦截系统目前可以拦截的最大高度,每输入一个高度,就与之比较,如果某个最大拦截高度大于输入的高度,将之替换;如果找不到,就新建一个拦截系统。
这个代码感觉不是特别严谨,想了半天就是想不出哪个数据可以卡住,但是感觉肯定有,求大神指点。
#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <cstdlib> using namespace std; int main() { int n, a, ans, j; int dp[30005]; while(scanf("%d", &n) != EOF) { ans = 0; for(int i = 0; i < n; i++) { scanf("%d", &a); for(j = 0; j <= ans; j++) {//循环比较,找出可以拦截的系统并替换其最大拦截高度 if(a <= dp[j]) { dp[j] = a; break; } } if(j > ans) {//如果找不到的话,就新建一个拦截系统,最大高度就为刚输入的高度 ans++; dp[ans] = a; } } printf("%d\n", ans); } return 0; }
相关文章推荐
- 【翻译phaser2.0教程】【1】社区游戏开发例子-幸运转盘
- 【NYIST】暑假训练赛 (一)-----Problem B
- 处理排序空值—sqlCookbook
- js实现图片浮动
- Hdu1285 拓扑排序-确定比赛名次
- 使用cmake编译C语言项目时使用第三方库
- 选择排序(Selection Sort)
- 轻松替换指定文件夹里的所有内容匹配的文件!
- 如何学习android高级编程
- bootstrap 旋转木马carousel 图片轮播
- Address already in use: JVM_Bind(端口冲突)
- ASCII,Unicode和UTF-8
- MBR 小结
- dozer使用中发现的一个问题
- String InputStream互换
- hdu5379 Mahjong tree DFS 多校联合第七场
- Linux学习笔记--目录处理命令----cd----切换目录
- poj-3253-Fence Repair-优先队列(哈夫曼树)
- Pascal's Triangle II
- hdu 1711 Number Sequence