寒假集训作业(9)——动态规划初步(2)
来源:互联网 发布:什么是真正的大数据 编辑:程序博客网 时间:2024/06/05 18:42
题目可参见:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1299
最长上升子序列
采用栈实现(思想是转载的)。先让第一个元素入栈。第二个元素先行与栈顶判断:
1.如果该元素与栈顶元素相比,比栈顶元素大,那么让它入栈;
2.如果该元素与栈顶元素相比,比栈顶元素小,那么从栈内检索第一个比该元素大的元素并用该元素替换之。(采用二分查找,该思想仍需学习)
3.最后剩余的栈元素个数就是最长子序列,元素就是最长子序列。这句话是错误的,应该改为,这是最长上升子序列之一,因为有可能有多个上升的子序列,他们的长度是相等的。
4.至于为什么它这么做的结果是正确的,我想可以解释如下:我们每次入栈的本身就是上升的子序列,然后替换的元素是比它大的第一个元素,而被替换的元素后面一定是上升的,那么这整体又构成了一个上升序列,替换之后元素个数并不改变。
#include <iostream>#define SIZE 1001using namespace std;int main(){ int i, j, n, top, temp; int stack[SIZE]; cin >> n; top = 0; stack[0] = -1;//retain the first element for (i = 0; i < n; i++) { cin >> temp; if (temp > stack[top])//push when greater { stack[++top] = temp; } else { int low = 1, high = top; int mid; while(low <= high)//binary search { mid = (low + high) / 2; if (temp > stack[mid]) { low = mid + 1; } else { high = mid - 1; } } stack[low] = temp;//replace the first-greater element } } cout << top << endl;//the length is the answer, and the elements are the sub-sequence... //system("pause"); return 0;}
至于如何用STL实现,我觉得还是等C++ Prime还有STL介绍这两本书到了之后再说吧。贺贺说的很对,工具不够灵活,C语言就是强悍在它能够灵活地编写算法。使用STL只是在一些工具的堆砌而已,不靠谱。
数字三角形:http://acm.hdu.edu.cn/showproblem.php?pid=2084
数字三角形问题
自底向上解决它!
我们把它换一下格式:
上图比较详细地描述了该过程:
#include <iostream>using namespace std;int main(){ int c; int a[110][110]; cin>>c; while(c--) { int n; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { cin>>a[i][j]; } } for(int i=n;i>0;i--) { for(int j=1;j<=i;j++) { if(a[i][j]>a[i][j+1]) { a[i-1][j]+=a[i][j]; } else { a[i-1][j]+=a[i][j+1]; } } } cout<<a[1][1]<<endl; }}
- 寒假集训作业(6)——动态规划初步
- 寒假集训作业(9)——动态规划初步(2)
- 寒假集训作业(2)——链表
- 寒假集训作业(1)——结构体
- 寒假集训作业(3)——栈与队列
- 寒假集训作业(4)——字符串
- 寒假集训作业(7)——排序查找
- 寒假集训作业(8)——数学问题
- 寒假集训作业(5)——递归与递推
- 7.19 暑期集训——动态规划篇(一)
- 7.21 暑假集训——动态规划篇(二)
- 暑假集训-训练6 动态规划初步
- 寒假集训——字典树(模板)
- 寒假集训附加题目题解报告(2)——加减乘除
- 寒假集训——KMP
- 寒假集训——AreYouBusy
- 寒假集训——饭卡
- (吐槽)寒假集训总结
- 命令行删除文件的方法
- Android Service 一般需要用到的4个类
- python检查HTML的标签完整性
- Linux性能优化学习笔记V0.1
- C语言的那些小秘密之const修饰符
- 寒假集训作业(9)——动态规划初步(2)
- 练习CRM搭建笔记——1、Browser Side
- 如何保持注意力
- hdu1506 Largest Rectangle in a Histogram
- 天涯运维之服务器远程操作
- 软件随想录(local.joelonsoftware.com/wiki)-2000年04月18日 使用介面设计手冊第四章 - User Interface Design for Programmers
- 实现序列化几种方式的对比
- MySQL行锁深入研究
- Freemarker+Flying sauser +Itext 整合生成PDF