随笔分类 -  算法学习

摘要:1.82.73.3 CPP类的编写以及异常处理3.63.7 CPP面向对象4.6-4.85.1-5.86.26.46.6第8章面向对象9.711.8c++ template和Java泛型 阅读全文
posted @ 2014-07-04 16:39 明之道 编辑
摘要:BackTracking http://www.geeksforgeeks.org/backtracking-set-8-solving-cryptarithmetic-puzzles/ http://www.geeksforgeeks.org/tug-of-war/ 注意找一半大小的,sum/2... 阅读全文
posted @ 2014-06-12 22:53 明之道 阅读(717) 评论(0) 推荐(0) 编辑
摘要:Recursionhttp://www.geeksforgeeks.org/reverse-a-stack-using-recursion/Greedy (几个经典图算法的实现)http://www.geeksforgeeks.org/greedy-algorithms-set-2-kruskals... 阅读全文
posted @ 2014-06-08 15:03 明之道 阅读(389) 评论(0) 推荐(0) 编辑
摘要:http://www.geeksforgeeks.org/closest-pair-of-points-onlogn-implementation/http://www.geeksforgeeks.org/closest-pair-of-points/ 复杂度证明http://www.geeksfo... 阅读全文
posted @ 2014-06-05 23:59 明之道 阅读(194) 评论(0) 推荐(0) 编辑
摘要:2_singleton4_replaceSpace c++动态数组的定义和声明以及空指针的边界条件10_CountOne 有个很trick的解法,再次注意边界条件11_Power 位运算和边界条件,注意位运算的优先级,小于关系运算符13_DeleteNode21_MinStack 思路以及栈相关的边... 阅读全文
posted @ 2014-06-01 17:17 明之道 阅读(173) 评论(0) 推荐(0) 编辑
摘要:http://www.geeksforgeeks.org/dynamic-programming-set-24-optimal-binary-search-tree/ 树的DP状态http://www.geeksforgeeks.org/ugly-numbers/http://www.geeksf... 阅读全文
posted @ 2014-05-26 16:48 明之道 阅读(1483) 评论(0) 推荐(0) 编辑
摘要:http://nbl.cewit.stonybrook.edu:60128/mediawiki/index.php/TADM2E_1.29 http://nbl.cewit.stonybrook.edu:60128/mediawiki/index.php/TADM2E_2.47 http://nbl... 阅读全文
posted @ 2014-05-21 18:28 明之道 阅读(319) 评论(0) 推荐(1) 编辑
摘要:http://oj.leetcode.com/problems/binary-tree-inorder-traversal/ 迭代解 http://oj.leetcode.com/problems/n-queens-ii/对角线的编号方法 http://oj.leetcode.com/proble... 阅读全文
posted @ 2014-05-10 15:20 明之道 阅读(389) 评论(0) 推荐(0) 编辑
摘要:priority_queue的接口可以很容易的搜到,这里不再赘述。见如下定义,cmp函数中,a<b,定义了一个最大堆。若是a>b,则定义了一个最小堆。View Code 1 struct cmp2 {3 bool operator()(const Node &a,const Node &b)4 {5 return a.ubound<b.ubound;6 }7 };8 9 priority_queue<Node,vector<Node>,cmp> activeNodes;至于为什么函数放在struct中,,我也不是很清楚。网上的使用大都是 阅读全文
posted @ 2012-11-05 15:19 明之道 阅读(2937) 评论(0) 推荐(0) 编辑
摘要:以前准备保研笔试的时候曾经练习过c语言实现这两种搜索,但是过去一段时间之后,遇到深搜和宽搜的实现,还是显得很是捉急啊!最近开始学习c++,发现c++实现下的深搜和宽搜简明易懂啊!简单一句话!深搜用堆栈,宽搜用队列。这篇文章主要倾向于实现而不是这两种搜索的应用了。 下面有两段代码,是从维基百科上找到的,个人感觉非常有可重用性。深搜 1 std::stack<node*> visited, unvisited; 2 node* current; 3 4 unvisited.push(root); //先把树的根指针 5 6 while(!unvisited.empty()) //只有U 阅读全文
posted @ 2012-10-12 22:04 明之道 阅读(5180) 评论(0) 推荐(0) 编辑
摘要:近来准备C上机考试,做了一些迷宫搜索的题目,这是我在之前的学习中非常薄弱的地方,经过这次学习之后终于有了一些具体的认识,故记录下来。 宽搜在解决最短路径的问题时使用的比较多,宽搜的概念非常简单,就是一层一层的搜索,直到发现目标。这里主要讲实现上。宽搜的实现主要使用了队列,从起点出发,遇到合法的点,就放入队列尾。每次取队列头进行处理,探索到新元素就放在队尾。如果队列中元素全部处理完也没有发现目标,则不存在这样的路径。遇到目标点之后,搜索结束。 这是每一步只要单位时间的简单搜索。如果在某些特定的点,要花费大于一个单位的时间,那么就要找到所有可能到达目标的路径,选择最短路径。 深搜比较适合解决路径. 阅读全文
posted @ 2011-09-27 22:00 明之道 阅读(3296) 评论(0) 推荐(0) 编辑
摘要:很久很久之前,我曾经转载过一个由前序遍历和中序遍历来构建二叉树的文章(http://www.cnblogs.com/ITEagle/archive/2010/01/17/1650138.html),但是我最近在准备保研的各种复试的时候,再去写这道题的时候,依然非常的痛苦,几次都不能一次性写对。于是我决定再自己写一篇文章,来分析这个简单的算法,我写的应该和上篇文章有很大不同的,因为那篇文章我完全看不进去。 首先描述算法: 1.在前序遍历中确定根节点,然后在中序遍历中确定左右子树。 2.回到前序遍历,分别确定左右子树的根节点。 3.如此递归,直到完成二叉树的构建。 ... 阅读全文
posted @ 2011-09-19 01:13 明之道 阅读(6464) 评论(0) 推荐(1) 编辑
摘要:这是我写的strcpy函数的例程:char* strcpy1(char* strDest,char* strSrc){ int i = 0; if(checkNull(strSrc) == 0) return NULL; while(strSrc[i] != '\0') { strDest[i] = strSrc[i]; i++; } strDest[i] = '\0'; return strDest;}int checkNull(char* str){ int len = strlen(str); if(len == 0) return 0; else ret 阅读全文
posted @ 2011-08-22 11:15 明之道 阅读(352) 评论(0) 推荐(0) 编辑
摘要:数塔问题是HDU ACM 的2084号问题。是使用动态规划的典型题目。 刚一开始不理解动态规划,总是混淆动态规划和贪婪算法。下面是我理解的动态规划和贪婪算法的区别: 贪婪算法更多的是自上而下的寻找最优解,每一步决策的选择在当前的位置所看到的最有的解。 动态规划则是自下而上寻找最优解,把整个问题,分解为很多类似的规模更小的问题,然后用这些更小问题的最优解之间的最优,来作为当前的结果,参与下一步的决策。动态规划解决问题关键的状态方程就是如此,如何利用目前的子问题最优解,转化到下一个稍大规模的最优解的方程。 然后附上我的代码: int max(int x,int y){ return x>y 阅读全文
posted @ 2011-08-03 11:19 明之道 阅读(1293) 评论(0) 推荐(0) 编辑
摘要:#include <stdio.h>#include <string.h>#include <stdlib.h>#define N50struct Node/* 树结点类型 */{charinfo;/* 数据域 */struct Node*parent;/* 父结点 */struct Node*lchild;/* 左孩子结点 */struct Node*rchi... 阅读全文
posted @ 2010-01-17 20:56 明之道 阅读(4807) 评论(0) 推荐(1) 编辑
摘要:#include<stdio.h>#include<stdlib.h>#include<string.h>intvisited[100][100];charstr[100][100];inti,j,n,m,move[4][2]={{0,1},{0,-1},{1,0},{-1,0}},count,max;intf(intx,inty){if(x>=0&... 阅读全文
posted @ 2009-12-27 08:04 明之道 阅读(310) 评论(0) 推荐(0) 编辑
摘要:#include<stdio.h>#definemaxsize100#defineinf10001inthill[maxsize+2][maxsize+2];intvis[maxsize+2][maxsize+2];constintdis[4][2]={{0,1},{0,-1},{1,0},{-1,0}};intDFS(intx,inty){inti;for(i=0;i<4;i+... 阅读全文
posted @ 2009-12-23 22:44 明之道 阅读(632) 评论(0) 推荐(0) 编辑
摘要:#include <stdio.h> #include <stdlib.h> //due to:qsort#include <string.h> int n; int stick[100]; int total; int ns; //一共需要还原出的木棍数nsint ok; int len; //当次需要达到的长度int cmp(const void *a,co... 阅读全文
posted @ 2009-12-23 21:40 明之道 阅读(2182) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示