
Algorithm
文章平均质量分 77
_acmore_
这个作者很懒,什么都没留下…
展开
-
一个M*N的矩阵,元素取值1或0,问如何找到最大的正方形,其所有的元素都为1
文章转自:文章链接#include #define MAX 500int matrix[MAX][MAX];int min(int a, int b){ return a < b ? a : b;}int main(){ int max = 1; int m, n; scanf("%d%d", &m,&n); for(int i =转载 2015-11-21 21:58:42 · 4288 阅读 · 0 评论 -
当随机不够随机:一个在线扑克游戏的教训
文章来源:http://kb.cnblogs.com/page/207086/作者: LAURA D. HAMILTON 来源: 伯乐在线 发布时间: 2014-05-04 21:17 阅读: 3322 次 推荐: 10 [收藏] 今天我要讲一个发生于1999年,一个很流行的在线扑克平台的开发者开发的洗牌软件,带有很微小但很致命的漏洞的故事。虽然这个故转载 2014-05-09 22:07:47 · 891 阅读 · 1 评论 -
微软面试100题之第4题
转载自:http://blog.youkuaiyun.com/bzhnja/article/details/25245871题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5转载 2014-05-08 19:26:23 · 420 阅读 · 0 评论 -
微软面试100题之第2题
转载自:http://blog.youkuaiyun.com/bzhnja/article/details/25086491设计包含 min函数的栈定义栈的数据结构,要求添加一个 min函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。#include #include #define MAXSIZE 100typedef str转载 2014-05-08 19:25:22 · 595 阅读 · 0 评论 -
微软面试100题之第1题
转载自:http://blog.youkuaiyun.com/bzhnja/article/details/25045439把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14转载 2014-05-08 19:23:45 · 397 阅读 · 0 评论 -
字典树
字典树,就是一种最大限度的利用单词的公共前缀高效查询单词(但不止是单词,所有有前缀的都可以类似进行查找)的数据结构。节点定义如下:struct node{ node *next[26];//26个字母,NULL则表示没有相应字母的分支 bool isWord;//true表示从根节点到当前节点路途中所有字母连成的单词已经在字典中 int point;//指向单原创 2014-05-05 22:17:29 · 472 阅读 · 0 评论 -
POJ 2251 Dungeon Master (BFS例题)
用STL的queue实现BFS,最基础的题目了,不多说上代码#include#include#include#include#define MAXN 35using namespace std;int lv,n,m,sta_x,sta_y,sta_z;char maze[MAXN][MAXN][MAXN];int op[7][3] = {{0,0,0},{1,0,0},{原创 2014-05-04 22:52:29 · 716 阅读 · 0 评论 -
由二叉树的两个遍历序列求另一个遍历序列
二叉树的重要的遍历序列有三种:先序遍历,中序遍历,后序遍历。其中中序遍历可以由原创 2014-05-03 14:54:53 · 1316 阅读 · 1 评论 -
POJ题目分类(不定期更新)
以下题目均为自己总结的POJ题目分类,转载请注明出处:http://blog.youkuaiyun.com/u013687632原创 2014-05-01 20:39:37 · 1143 阅读 · 0 评论 -
POJ 2823 Sliding Window (单调队列)
/*poj 28238012K 5344MS*/ #include#include#define MAXN 1000005#define MAX_INT 2147483647using namespace std;int que_min[MAXN][2],que_max[MAXN][2],ans_min[MAXN],ans_max[MAXN];//que二维数组,[]原创 2014-05-01 21:55:51 · 344 阅读 · 0 评论 -
堆和堆排序
所谓堆,就是一棵完全二叉树,原创 2014-05-02 12:50:30 · 543 阅读 · 0 评论 -
POJ3253 Fence Repair
哈夫曼思想,优先队列解决手打版原创 2014-05-02 14:03:47 · 512 阅读 · 0 评论 -
POJ 1789 、Truck History
prim最小生成树模板,直接上代码原创 2014-05-15 16:38:02 · 485 阅读 · 0 评论 -
POJ 1080 Human Gene Functions(动态规划)
挺经典的DP题目,LCS变形,注意边界处理!原创 2014-05-17 20:05:33 · 763 阅读 · 0 评论 -
POJ 1328、Radar Installation 贪心
version 1从右到左排序,每次都尽可能的选打击范围内最右边的点安装雷达(由于浮点,所以不要一棒子打死的判断是大是小,给出一个精度范围,一开始范围给打了就WA),拿这个雷达去覆盖其他点,最后雷达总数一定是最少的/*poj 1328264K 16MS*/#include#include#include#include#define MAXN 10原创 2014-05-22 12:43:23 · 850 阅读 · 0 评论 -
文件夹遍历Java版
Java下的File类(文件类,其实感觉文件类有点误导性,用“文件路径”会好一点)有list方法,会返回指定路径下所有文件和目录,用这个方法以及简单的递归可以写出一个简陋的文件遍历程序import java.io.File;import java.io.FileWriter;import java.io.IOException;public class test_for_tea原创 2014-10-20 21:52:57 · 428 阅读 · 0 评论 -
POJ 3255 Roadblocks (次短路问题)
解法有很多奇葩的地方,比如可以到达终点再跳回去再跳回来(比如有两个点)。。。。反正就是不能有最短路,不过没关系,算法都能给出正确结果思想:和求最短路上的点套路一样,spfa先正着求一次,再反着求一次最短路,然后枚举每条边找dist_zheng[i] + len + dist_fan[j]的第二小值即可!注意不能用邻接矩阵,那样会MLE,应该用邻接表/*poj 3255原创 2014-07-08 19:18:32 · 655 阅读 · 0 评论 -
最长回文子串
文章来源:http://blog.163.com/zhaohai_1988/blog/static/2095100852012716105847112/ 最长回文子串是最初我在网易笔试的时候遇见的,当时天真的把原字符串S倒转过来成为S‘,以为这样就将问题转化成为了求S和S’的最长公共子串的问题,而这个问题是典型的DP问题,我也在前面的文章中介绍了3中解决这个问题的方法。但转载 2014-07-06 21:29:42 · 404 阅读 · 0 评论 -
POJ 3093 Margaritas on the River Walk (0-1背包变形)
这题目的思路很巧妙,什么情况下剩下的所有物品都放不下呢?就是当前剩余物品中最小的那个也放不下。所以,先把物品按照容量从小到大排序,依次枚举当前背包为放不下的最小物品的情况。对于当前物品i,必有1到i-1的所有物品都放进去,这时候比i大的物品谁放谁不放是不确定的。转换成0-1背包问题:把前i-1个物品都放进去以后,得到空间为tsum - sum[i-1](前缀和)的包,只要从第i+1到第n个物品原创 2014-07-06 21:15:09 · 789 阅读 · 0 评论 -
POJ 2676 Sudoku (数独)
经典搜索问题,主要是时间上的优化,我用了三个辅助数组记录信息 row[i][k] = 1表示第i行数字k已经被使用,col[j][k] = 1表第j列数字k已经被使用,blo[i][k]表示第i个小九宫格中数字k已经被使用还有很重要的一个优化(没有优化的话可能会超时,或者非常慢,像POJ讨论区里有很多说正着搜超时,倒着搜0ms,这的确是一个可以用的方法,但是有一定的随机性),每次填数字时,先扫原创 2014-07-01 22:33:32 · 682 阅读 · 0 评论 -
windows编程之文件夹遍历
利用windows的API,FindFirstFile和FileNextFile,采用递归遍历指定文件夹中的所有文件及文件夹,第一次windows编程,代码写的很臃肿难看,请大家多多包涵!#include#include#include#include#define MAXN 100005using namespace std;void surf(WIN32_FIND_DAT原创 2014-05-31 23:47:45 · 1043 阅读 · 0 评论 -
红黑树
文章来源:http://blog.youkuaiyun.com/longerzone/article/details/7817533--摘自维基百科红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick转载 2014-05-30 21:33:11 · 1224 阅读 · 0 评论 -
数据结构学习之二叉排序树
介绍:二叉排序树是以一定的规则排列树中元素,因而可以进行快速的排序和查询的树状数据结构,一般规则是:对于树中任意一个节点,左孩子严格小于根,根严格小于右孩子,有点像大根堆。(只是大根堆中左右孩子关系并不确定,且和根的关系是统一的,而且有上浮和下沉操作使得大根堆总是一棵完全二叉树,其不断弹出堆顶形成有序列的过程叫做堆排序。虽然二叉排序树中也有旋转操作使得树尽量平衡,但是由于数值大小分明的左右孩子,在原创 2014-05-30 16:25:37 · 1084 阅读 · 0 评论 -
POJ 1847 Tram 单源最短路径
题意:轨道网,有若干转换器,每个转换器都和其他若干转换器相连,转换器初始指向第一个与其相连的转换器。问要到达终点需要最少转换多少次?思路:可以用dijkstra单源最短路来做,把轨道网看做有向图(因为1第一个指向2,2的第一个不一定指向1),当前转换器处始指向的那个转换器之间的路径权值为0,其他路径权值为1,求一次起点到终点的最短路,结果就是最少转换次数,注意可能没有路径,这时要输出-1代原创 2014-05-28 14:00:48 · 949 阅读 · 0 评论 -
POJ 3268 Silver Cow Party dijkstra单源最短路
裸dijkstra思路:以x为源点,求到其他点的最短路,之后把邻接矩阵转置,再求一次x源点的最短路,这样就一次是来的,一次是走的,相加迭代最大值即可代码:/*poj 32688108K 47MS*/#include#include#define MAXN 1005#define MAX_INT 2147483647using namespace s原创 2014-05-26 18:04:10 · 851 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes 字典树
题意很好理解就不说了,然后这道题其实不用字典树更简单,但是为了练习trie树就写了一下,1A了哈哈,再对比了一下讨论区的大神代码,发现我还是写复杂了。。。思路:想到利用字典树,继承字典树原有机制,从底端叶子向上找,每条路径最先找到的分叉点再往下(从叶子找上来的这条路)一个字符即为所求(特殊情况,如果节点处单词已结束,那么就输出整个单词好了),也就是从上往下找到的第一原创 2014-05-24 19:02:20 · 751 阅读 · 0 评论 -
POJ 1042 Gone Fishing (贪心)
题目大意:一个人原创 2014-05-02 19:07:43 · 818 阅读 · 0 评论