上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页
摘要: 本人介绍的排序算法主要有:插入排序,选择排序,冒泡排序,快速排序,堆排序,归并排序,希尔排序,二叉树排序,桶排序,基数排序(后两者为非比较排序,前面的为比较排序)。 排序的稳定性和复杂度: 不稳定: 选择排序(selection sort)— O(n2) 快速排序(quicksort)— O(nlo 阅读全文
posted @ 2014-03-13 13:21 Mr. Ant 阅读(3448) 评论(7) 推荐(4) 编辑
摘要: C++析构前言析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。C++析构误解正文对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责类内的资源的free。来看一段代码:class myclass{ public: myclass() { cout #include #include #include using namespace std;class myclass{ p... 阅读全文
posted @ 2014-03-06 21:06 Mr. Ant 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 虚函数是动态多态性的基础,其调用的方式是动态连篇(简单解释为只有在程序运行时才决定调用的是基类还是基类的派生类,系统会根据指针指向的对象来决定要调用的函数)非虚函数与其相反,是静态连篇(简单解释为在编译时期就已经决定了要调用的函数)class Shape{ public: Shape(){}; void draw() { cout draw(); s=new Circle(); s->draw(); return 0;}我主程序中的意思是要画方形和画圆形,可执行的结果都是画图形(叫你两儿子出来,怎么出来的都是你啊,扯... 阅读全文
posted @ 2014-03-06 20:43 Mr. Ant 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 一:静态数据成员:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1、静态数据成员的定义。静态数据成员实际是类域中的全局变量,其定义方式与全局变量相同。例如:class base{ private: static const int x;};const int base::x=10; //初始化时不受private和protected访问限制注意:不要试图在头文件中定义(初始化)静态数据成员。2、静态数据成员被类的所有... 阅读全文
posted @ 2014-03-06 19:59 Mr. Ant 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 1、sizeof是运算符,而strlen是函数。2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。4、数组做sizeof参数不退化,而做strlen就退化成指针。5、大部分编译程序在编译的时候就把sizeof处理过了,这就是sizeof(x)可以用来作为数组空间大小的原因。char str[20]=“0123456789”;a=strlen(str); // a=10,运行时确定b=sizeof(st.. 阅读全文
posted @ 2014-03-06 15:37 Mr. Ant 阅读(2094) 评论(0) 推荐(0) 编辑
摘要: 基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c++程序员必须掌握)9. 死锁的概念,导致死锁的原因.10. 导致死锁的四个必要条件。11. 处理死锁的四个方式。12. 预防死锁的方法、避免死锁的方法。13. 进程调度算法。(周转时间 =程序结束时间 -- 开始服务时间、带 阅读全文
posted @ 2014-03-06 14:59 Mr. Ant 阅读(404) 评论(0) 推荐(1) 编辑
摘要: 问题:在一个给定的区间[a,b]内,找满足要求的数。如果我们用暴力的话一般要考虑数的大小,而数位dp要考虑的确实数的组成。例如: 递增的 1234 1357 2468 整除13的 13 26 39 包含13的 132 2134 双峰的 152630 243052如果数的位数大于100,暴力肯定Over。数位dp要注意的就是数的组成处理以及数的边界处理。核心思路:记忆化搜索+记录合适状态。数位dp顾名思义就是逐位dp逐位考虑。举例: [0,8457]内逐位递增的数有多少个。那么我们先对第一位进行处理,即枚举0XXX,1XXX,...8XXX。当我们枚举到第二位的时候。0... 阅读全文
posted @ 2014-02-12 19:52 Mr. Ant 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747题意:有一组序列a[i](1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 #define lz 2*u,l,mid 11 #define rz 2*u+1,mid+1,r 12 typedef long long lld; 13 const int maxn=222222; 14 int a[maxn], b[maxn],... 阅读全文
posted @ 2013-09-18 20:17 Mr. Ant 阅读(5192) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3721题意:给你一颗n个节点n-1条边的树,每条边都有一个权值,现在让你任意移动一条边然后把这条边连接到任意两个点上,最后问你怎样移动才能使树上相距最远的两个点距离最小。思路:先求出树的最长路,然后枚举移动最长路上的所有边,移走这条边后,原树必定分为不连接的两颗子树,分别求这两颗子树的最长路,然后分别找到两颗子树最长路上靠近中点的点,把这两个点连上刚刚从母树移走的边,再求一遍母树最长路,比较所有结果取最优解即可。注意每次枚举移动后都要把图复原然后继续枚举。 1 #pragma comment(li. 阅读全文
posted @ 2013-09-09 21:28 Mr. Ant 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 题意:数列A1,A2,...,AN,修改最少的数字,使得数列严格单调递增。(1=b-a,这样才能满足夹在中间的数能够修改。那么本题在nlogn求最长上升子序列的基础做一些处理即可。处于满足的序列中必须有a[i]-lis[x]-1>=i-pos[x]-1,并且替换的时候不是原来的找到大于这个值的最小的,而是找满足前面这个式子已求序列中最大的。比如序列:1 3 6 6 13 2 8 9 10,求最长上升子序列过程中当求得的序列为 1 3 6 13 时,当遇见8时,我们不是变为1 3 6 8,而是变成1 3 8, 因为只有这样才是满足条件的,当时它的最长序列top=4不会变化。还要注意的一点是 阅读全文
posted @ 2013-08-30 15:47 Mr. Ant 阅读(2781) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页