摘要: 问题判断一棵树是否是另一棵树的子树,如图思路问题分两步:找值相同的根结点(遍历解决)判断两结点是否包含(递归:值、左孩子、右孩子分别相同)树节点定义struct TreeNode{ int val; TreeNode *next; TreeNode(int v) : val(v),... 阅读全文
posted @ 2015-06-29 11:20 蚂蚁吃大象、 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 行文脉络解法一——除法解法二——移位解法三——高效移位解法四——查表扩展问题——异或后转化为该问题对于一个字节(8bit)的变量,求其二进制“1”的个数。例如6(二进制0000 0110)“1”的个数为2,要求算法效率尽量高。解法一对于二进制数来说,除一个2,就少一位,可以判断这个少的位来确定“1”... 阅读全文
posted @ 2015-06-26 10:48 蚂蚁吃大象、 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 去掉K位求取最小数 一个n位的数,去掉其中的k位,怎样使留下来的(n-k)位数按原来的前后顺序组成的数最小例如8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。解决方案贪心算法,在每次被访问的位置保证有最优解。思路一分析:求一共n位,求其中的m位组成的数最小。... 阅读全文
posted @ 2015-06-25 17:40 蚂蚁吃大象、 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 顺序打印矩阵思路参考代码#include using namespace std;void printNumAsClockwise(int a[][4], int row, int col){ if (row = left; --i) cout = up; --i) ... 阅读全文
posted @ 2015-06-25 17:05 蚂蚁吃大象、 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 虚函数#include #include using namespace std;class Base{ public: virtual void print_val() { cout print_val(); yb.print_val(... 阅读全文
posted @ 2015-06-24 21:49 蚂蚁吃大象、 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 1、算法简述简单地说:全排列就是从第一个数字起每个数分别与它后面的数字交换。E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc +... 阅读全文
posted @ 2015-06-19 20:50 蚂蚁吃大象、 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 动态规划--矩阵链乘法1、矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C。#include using namespace std;#define A_ROWS 3#define A_CO... 阅读全文
posted @ 2015-06-17 21:02 蚂蚁吃大象、 阅读(260) 评论(0) 推荐(0) 编辑
摘要: set用法 一、set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件: 二、创建元素 三、插入元素 例如: 结果: 四、删除元素 结果: 五、查找元素 例如: 结果: 六、其他 上述程序最后新产生一个s 阅读全文
posted @ 2015-06-12 11:16 蚂蚁吃大象、 阅读(275) 评论(0) 推荐(0) 编辑
摘要: List介绍 Lists将元素按顺序储存在链表中。与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。 实例一: 结果: 实例二: 结果: 阅读全文
posted @ 2015-06-12 10:36 蚂蚁吃大象、 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一、什么是最长公共子序列 什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。 举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4... 阅读全文
posted @ 2015-06-11 21:26 蚂蚁吃大象、 阅读(444) 评论(0) 推荐(0) 编辑