
学习
jn_8316
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
栈
#include#includeusing namespace std;int main(){ stack s; s.push(1); s.push(2); s.push(3); printf("%d\n",s.top()); s.pop(); printf("%d\n",s.top()); s.pop(); prin原创 2016-04-19 13:32:24 · 209 阅读 · 0 评论 -
01背包第一讲的理解
首先01背包的基本思路是通过二维数组来进行实现的,就是当前背包放入或者不放入所得到的最大价值,也是通过层层递归进行实现的,因此就会出现状态转移方程:f[i][v]=max{ f[i-1][v] , f[i-1][v-c[i]]+w[i] },这里面的 f 数组使用来储存价值,i 代表着物品的个数,v 代表背包的容量, c数组代表每个物品的体积大小,w数组代表着每个物品的价值。但是01背包一讲只是原创 2016-07-21 11:47:03 · 344 阅读 · 0 评论 -
矩阵取数(动态规划理解)
首先这道题是一道动态规划的问题,而且这道题每行的取数得数之和都是互相独立的,那么我们思考这个问题时就可以从整个矩阵最大得数和简化为每行的最大得数和,那么我们就需要动态规划每一行的得数,而动态规划就是从子问题出发进而解决大问题,那么我们就可以得到每一行的规律,也就是取数的次数和剩余数的个数之间的关系,而且这个也是不变的,那我们就可以列举区间长度,从最短区间去考虑,得到短区间的得数,进而慢慢到最大的。原创 2016-07-22 10:55:52 · 623 阅读 · 0 评论 -
经典递归汉诺塔
算法:当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。 当A塔上有两个盘子是,先将A塔上的1号盘子(编号从上到下)移动到B塔上,再将A塔上的2号盘子移动的C塔上,最后将B塔上的小盘子移动到C塔上。 当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然后将A塔上的3号最大的盘子移动到C塔,最后转载 2016-07-27 19:50:08 · 365 阅读 · 0 评论 -
高精度加减
#include#includeint a[1000],b[1000],c[1000],d[1000];void plus() //高精加{ int i,len; if (a[0]>b[0]) len=a[0]; else len=b[0]; for (i=1;i<=len;i++) c[i]=a[i]+b[i]; for (i=1;i<=l原创 2016-07-28 15:40:02 · 294 阅读 · 0 评论 -
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种转载 2016-08-02 09:24:10 · 332 阅读 · 0 评论 -
二叉树
#include#include#includeusing namespace std;struct node{ char data; node *l,*r;};node *t=(node*)malloc(sizeof(node));node* build(){ char ch; scanf("%c",&ch); node *neww=(n原创 2016-07-30 11:48:56 · 315 阅读 · 0 评论 -
C++类和对象概念
C++是一门面向对象的编程语言,理解C++,首先要理解类与对象这两个概念。C++中的类可以看做C语言中结构体(Struct)的升级版。结构体是一种构造数据类型,可以包含若干成员(变量),每个成员的数据类型可以不一样;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。这是C语言中想要调用同一个人信息的方法,例如:#include int main(){ // 定义结原创 2016-08-06 20:13:06 · 4005 阅读 · 1 评论 -
The Suspects
题目链接:http://poj.org/problem?id=1611这道题运用了并查集的合并和找根结点,没有路径压缩。#include#includeusing namespace std;int rankn[31000];///树的高度int father[31000];///父亲结点int n,m,k,t,fx,fy;void ready(){ for(int原创 2016-05-17 15:21:19 · 220 阅读 · 0 评论 -
区间调度问题
我们要选择结束时间最早的,这样才能保证选的区间比较多,因此这个里面会有对区间的排序,结束时间最早排在前面,运用了pair,pair中有两个属性就是first,second,把s存在了second中,把t存在了first中,这样就可以把结束时间最早放在前面。#include#include#include#includeusing namespace std;const int max原创 2016-04-21 10:35:14 · 382 阅读 · 0 评论 -
硬币问题
#include#include#includeusing namespace std;const int v[6]={1,5,10,50,100,500};int c[6];int A;int main(){ for(int i=0;i<6;i++) { scanf("%d,",&c[i]); } scanf("%d",&A);原创 2016-04-20 21:01:52 · 504 阅读 · 0 评论 -
单调栈
给定一组数,做成单调递增栈(栈底到栈顶递增),一组数的选择会影响到这个程序#include#include#includeusing namespace std;int main(){ int a[10]={1,5,9,2,4,2,6,10},i; stacks; while(!s.empty()) s.pop(); s.push(a[0]);原创 2016-05-15 15:46:50 · 266 阅读 · 0 评论 -
高精度乘法
乘高精#include#includeint a[1000],b[1000],c[1000];void mul(){ int i,j,len; for (i=1;i<=a[0];i++) for (j=1;j<=b[0];j++) { c[i+j-1]+=a[i]*b[j]; c[i+j]+=c[i+j-1]原创 2016-07-28 15:53:12 · 322 阅读 · 0 评论