C++
文章平均质量分 88
文西
过得太舒服,就是不自在的人
展开
-
PKU ACM 1753 第一道bsf算法
DescriptionFlip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares. One side of each piece is white and the other one is black and each piece is lying原创 2011-11-28 21:32:17 · 12408 阅读 · 0 评论 -
POJ 3250 单调堆栈
其实今天是第一次听说这个数据结构。顺便AC了一道题目:http://poj.org/problem?id=3250先说说单调堆栈吧,其实网上对这个东西的介绍不是很具体,百度知道上也只是有很简单的描述,其实这个堆栈就是一种对压入堆栈的元素有一定限制的堆栈,例如单调递增或者单调递减。如果当前要压入堆栈的元素不满足递增或者递减要求,则从栈结构中弹出一些数据,直到变成空,或者满足单调条件。所以原创 2012-07-29 16:59:02 · 1351 阅读 · 0 评论 -
POJ 1742 多重背包问题
在《背包九读》里,作者提到了最后的一种基本背包问题是多重背包问题在所有背包问题中,问题都是一致的:有若干个物体,P(Wi, Vi) ,每个重量用wi表示,选择后能获得的价值用Vi表示。然后有一个总容量,在满足不超过总容量的情况下,使得选择的物体尽量价值最大。01背包中,物体只有一个要么选,要么不选。在 完全背包问题中,每个物体都有无数个,也可以选择无数个。在 多重背包中,物体的个数原创 2012-07-28 20:13:08 · 1276 阅读 · 0 评论 -
POJ 1384 完全背包问题
阅读《背包九讲》的同时,配合做一下POJ上的题目。上次练习是01背包问题,这次练习是完全背包问题。在01背包问题中,出现的背包要么选择,要么不选择。而在完全背包问题中,背包出现的次数是没有上限的,即可以选择任何次数的。在背包九讲里,作者给出了一个状态转移方程,核心代码如下:for( int i = 0; i < nObject; i++){ for( int j = weig原创 2012-07-28 11:00:37 · 3240 阅读 · 0 评论 -
POJ 1276 多重背包问题
题目在 http://poj.org/problem?id=1276题目大意是说,我现在要从ATM中取钱,MATM里面有若干种货币,每一种都有对应的货币面额和张数。问现在ATM能够取出来的 小于等于M的最大金额。若将M理解为背包重量,而每种货币的面额理解成 value,货币的面额同样理解成重量,那么这个问题就是一个多重背包问题。多重背包问题可以转换成完全原创 2012-08-13 14:41:27 · 2169 阅读 · 0 评论 -
POJ 1226 Substrings KMP
题目在:http://poj.org/problem?id=1226不知道为什么当时没有AC掉这个题目,后来看看自己当时提交的代码还是有很多问题的,所以还是写了这个东东,算是自己对这个题目的反思吧。题目大意:给出一些字符串的集合 D,然后找出一个字符串S,这个字符串满足如下条件:S自身,或者S的Reverse,都是D中任意字符串的字串。求出最长的S的长度。S原创 2012-08-13 11:27:54 · 1039 阅读 · 0 评论 -
POJ 3126 BFS
题目在http://poj.org/problem?id=3126做了几道BFS,给我的感觉BFS适合解决的题目类型可能是属于有这类特点的通常是给出一个原点,一个目标点,然后求出最短的路径什么的。这里和最小生成树和Dijkstra还是有很有区别,Dijkstra floyd适合解决那种,路径上的值都是不一样的那种情况,在这里,我们无法根据节点在BFS出现的顺序来决定一个圆点到终原创 2012-08-10 23:05:00 · 924 阅读 · 0 评论 -
POJ 1813 哈希表算法
题目地址: http://poj.org/problem?id=2002题目的大意是在二维平面上有很多点,问有多少种可能组成正方形。假设这些点的坐标都可以用int来表示例如下面图是一个例子: 可以形成的正方形是6个,有一个比较特殊的红色的正方形。这个题目如果用暴力所有的话,显然是4层循环,看选中的四个点能否构成正方形。不过显然这么高的复杂度,一定会超时的。下面的做法是我原创 2012-08-06 21:49:09 · 1495 阅读 · 1 评论 -
POJ 2251 找到出口 BFS
题目在 http://poj.org/problem?id=2251其实这个题目和普通的走迷宫(二维走迷宫思路是一样的),只不过这个题目将迷宫扩展到三维. 最短路径,BFS代码如下:Source CodeProblem: 2251 User: hopeztmMemory: 620K Time: 32MSLanguage: C++原创 2012-08-11 16:59:35 · 989 阅读 · 0 评论 -
POJ 2062 完全背包
题目在http://poj.org/problem?id=2063上一篇文章练习了一个完全背包问题,这里又做了一个意图在于巩固吧,正所谓孰能生巧。题目大概的意思是说:一共有M元钱,用于做N年的投资。一共有K中债券可以买,每种债券用(Ci, Ii)来表示,意图是话费为Ci,年终回报的Ii可以每年年初买好债券,年后卖掉重新买进。问在N年后,最大可以使得资产变为多少。其实原创 2012-07-28 12:59:59 · 1782 阅读 · 0 评论 -
POJ 1062 DFS
感觉自己已经有N久没有写过DFS算法了,因为这道题目在DFS的过程中会保留和计算一些值,所以导致程序看起来有点丑陋。话不多说 贴题说思路,目前水平有限,发博客的主要原因是要写给自己,作为一段时间学习的印证吧。题目地址: http://poj.org/problem?id=1062这道题目也是POJ上 少有的中文题目了,所以很快能读懂。不过回想去年这道题其实自己尝试过一次,不过没有解出来,后原创 2012-07-30 22:18:49 · 1316 阅读 · 0 评论 -
C++重载new,以及实现检测内存泄露版本的new
在c++中,new作为一个操作符,也是可以被重载的,这个可能很多人比较陌生。在 Effective C++这本书中,专门提到了这方面的知识,看过此书,做一些总结,顺便在网上找到一些内容,实现一个可以检测内存泄露的内存分配机制(new delete)。1. new_handler在铺叙重载new之前,先说一下new_handler, 如果读过 windows结构化异常,对这个机制应该原创 2012-09-13 21:03:44 · 5065 阅读 · 0 评论 -
经典面试题总结 —— Binary Search 及其变种
二分查找是在技术面试中经常出现的题目,首先这种题目考察思路,另外因为代码一般很短----不会超过50行。所以很适合做技术笔试,或者面试之类的题目出现。之前做过一些题目,很多是BS算法的变种,我这里给出几个例子,算是做一个总结吧。1. 传统的Binary Search 1.1. 最普通的BS算法就是给定一个排好序的数组,然后查找一个数是否在数组内,如果在给出下标,如果不在原创 2012-08-18 13:52:53 · 5535 阅读 · 13 评论 -
网易杭州研究院实习面试题和答案
这个实习都是发生在去年的事情了,大概是12月中旬的时候参加的面试。 回想起来一些面试中出现的问题,就分享一下问题和解题思路,希望给准备找工作的同学多一些题目上的帮助吧。1. 闲聊2. 语言题:C++:有点记不清了,大概有如下题目:1. 说说静态成员函数,普通成员函数各自的特点。2. 静态成员函数的访问特性,例如可否访问普通成员数据等3. inli原创 2012-08-17 07:27:15 · 5737 阅读 · 1 评论 -
POJ 2559 单调栈 Histogram
题目在http://poj.org/problem?id=2559。这个题目是一个好朋友给我讲的方法,我按照自己的理解,敲出来代码。 所以把算法流程和代码贡献出来,希望和大家共同学习。题目大意:给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形。例如: 7 2 1 4 5 1 3 3原创 2012-08-15 12:37:54 · 9264 阅读 · 4 评论 -
POJ 3267 动态规划
题目地址: http://poj.org/problem?id=3267这个题目我自己不是很明白如何做动态规划,看到一个同学的帖子,ac了题目,不过似乎还有一些似懂非懂,转载一下思路,慢慢想吧。题思路动态规划 题意就是给出一个主串,和一本字典,问最少在主串删除多少字母,可以使其匹配到字典的单词序列。PS:是匹配单词序列,而不是转载 2012-08-13 22:44:13 · 1386 阅读 · 0 评论 -
经典面试题--寻找01矩阵中最大的1矩形(POJ 3494)
POJ地址:http://poj.org/problem?id=3494题目简述题目的描述很简单,在一个M * N的矩阵中,所有的元素只有0和1, 找出只包含1的最大矩形。例如:图中是一个4 × 6的矩形,画出红色的是我们要找到的区域。最开始见过这个题目是在看一个人写的面经里面,当时完全没有感觉,不知道怎么做。后来知道了一个东西叫单调栈然后做了一些题,居然发现POJ原创 2012-08-15 19:11:46 · 18028 阅读 · 0 评论 -
POJ 3041 匈牙利算法 最小覆盖 最大二分匹配
题目在这里 http://poj.org/problem?id=3041因为最近在准备找工作,所以一直在学习算法,不过我觉得对于一个初学者来说,最难的不是弄懂一个算法,二是如何将题目编程算法的模型,然后编写出程序。个人觉得这个过程应该就是靠多做题,多分析吧,培养自己的灵感来源。这个题目大概的意思是说, 在一个N*N的矩阵中,有若干个陨石,飞船的大炮可以每次消灭一排或者一列,问如何使得开炮的原创 2012-08-01 20:31:48 · 1250 阅读 · 0 评论 -
POJ 3083 BFS
题目地址:http://poj.org/problem?id=3083题目大意: 说有一个迷宫,迷宫有一个入口S和出口E,现在要你求出三种路径各自的长度1. 沿着最左边走。2. 沿着最右边走。3. 最短路径。其实沿着最左,最右方向走的时候,特别需要小心的是考虑在顺时针和逆时针转的时候,当前方向,选择下一个位置,和下一个方向之间的关系。为了更好的解释,我用图说明一下:原创 2012-08-11 10:05:38 · 1162 阅读 · 0 评论 -
POJ 3414 得到想要的容量 BFS
题目在: http://poj.org/problem?id=3414题目的大意是: 给你两个容量固定的烧杯,容量分别是A和B,如何得到体积是C的水,只有如下操作是合法的1. 装满A,从水源处获得2. 装满B3, 将A倒给B,倒完后或者B倒满了,或者A空了4. 将B倒给A,倒完后或者A满了,或者B空了5. 将A清空6. 将B清空求出最少的步骤可以使得原创 2012-08-11 14:09:56 · 985 阅读 · 0 评论 -
POJ 3216 最小点覆盖 以及一些总结
题目在 :http://poj.org/problem?id=3216题目的大意说,我们的维修队,负责N个街区的维修任务。现在知道各个街区直接的距离。现在有M个任务,每个任务有各自所在的街区(任务可以出现在同一个街区),任务最迟的开始时间,任务持续时间信息。现在编程求出,最少可以派出几名维修员完成维修任务。在这里我想自己把做题出现的两类可以用最大二分图匹配的总结一下。第原创 2012-08-03 23:04:34 · 1337 阅读 · 0 评论 -
POJ 1548 最小路径覆盖
题目在:http://poj.org/problem?id=1548现在练习算法的时候,都是按照分类做的,所以已经知道这个题目可以用最小路径覆盖来解决。所以按照这个方向想想就能把问题转换成最小路径覆盖问题了。题目比较容易理解,就是说收垃圾的机器人从最左上出发,在格子里沿着右和下漫步整个格子一直到最右下面。在有垃圾的地方收垃圾,没有地方可以跳过。然后找出最小的机器人数,可以将所有原创 2012-08-03 20:52:02 · 825 阅读 · 0 评论 -
POJ 2594 最大二分匹配 最小路径覆盖
题目在: http://poj.org/problem?id=2594因为是按照分类做题目,所以在明知这个题目是 最小路径覆盖的时候,就匆忙写好代码,提交,结果WA。检查半天,结果发现题目中的提示:You should notice that the roads of two different robots may contain some same point. 而传统的最小路径覆原创 2012-08-03 20:05:54 · 721 阅读 · 0 评论 -
POJ 3692 最小点覆盖 最大二分图匹配
题目在这里:http://poj.org/problem?id=3692大意是说,在幼儿园中有N女孩M个男孩,其中所有的女孩互相认识,所有的男孩互相认识,并且有一些男孩和女孩互相认识。现在要你找出最多的人,他们都互相认识。这个题目最开始看起来的时候没有想清楚如何转换成最大二分图,在网上找了一些人的文章,一些思路是在二分图里找到最大子团,然后转换成二分图。想了好久,我觉得这样理解原创 2012-08-02 20:12:20 · 1021 阅读 · 0 评论 -
在1-n中1出现的次数(微软等IT公司面试一百题)
因为自己想的思路和网络上广泛的思路不一样,所以写一下我的思路,验证结果是正确的题目如下:输入一个整数N,求从1-N这N个整数的十进制表示中1出现的次数,例如输入12,从1到12这些整数中包含1的数字有1,10,11,12, 1 一共出现了5次。(Google面试题目)用两个数字简述我的思路 例如输入为 7111从1-7111可以分解成1-6999 和 111原创 2012-06-24 09:32:14 · 3575 阅读 · 1 评论 -
二叉搜索树和红黑树概述以及模板实现(2)--红黑树
其实很多人会意识到,如果使用二叉搜索树,在数据不好的情况下,最后查找的效果会变成线性。例如数据 1 2 3 4 5 6 7,根为1,其他数据依次插入在右侧,最后变成一个线性结构,性能就会变差。如何改善二叉搜索树,使得树的高度接近logN,这种特殊的二叉搜索树就可以用红黑树来实现。红黑树满足的五个条件1. 每个节点或是红色,或者是黑色2. 根是黑色的3. 每个叶节点(NIL)是黑色的原创 2012-01-04 23:26:42 · 1200 阅读 · 0 评论 -
二叉搜索树和红黑树概述以及模板实现(1)
最近研究了一下算法导论里面关于二叉搜索树和红黑树的一章,对于红黑树的内容虽然还没有完全消化吸收,写一篇blog算是对所有内容的一个复习和反思吧。1. 二叉搜索树二叉搜索树是一颗二叉树,要求对于任何一个节点,它的左儿子内的数据要小于根节点数据,而右节点的数据要大于根节点内的数据。例如在搜索问题中,虽然哈希表在比较好的情况下可以提供O(1)的时间,但是对于数据分布不好,或者数据原创 2012-01-04 22:56:22 · 1170 阅读 · 0 评论 -
谷歌C++代码规范--翻译学习1
谷歌CPP 编程规范-- 每天看点,多了也记不住,在实践中改变自己的代码风格吧!Cpp文件的命名是.cc而不是.cpp,这点不是很明白,为什么不用cpp,而是用cchttp://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Scoping1. 头文件#define 保护每个头文件都应该有#defi原创 2011-11-28 21:25:08 · 1330 阅读 · 0 评论 -
POJ 3349 第一道哈希
题目在 http://blog.csdn.net/lyy289065406/article/details/6647351其实在面试中哈希表是经常被问到的一个题目,不过实战编程中运用的却很少,因为很少有效率瓶颈。这个题目就一道典型的可以用哈希表可以加速的题目。题目大意:每片雪花有 6 个角长度的值,对于不同的雪花而言,这些值可能被反转,并且开头的长度未必是一致的例如 1 2原创 2012-08-05 19:12:12 · 2167 阅读 · 0 评论 -
状态压缩动态规划 POJ 2411 (编程之美-瓷砖覆盖地板)
题目地址:http://poj.org/problem?id=2411编程之美的课后题也有一个和整个题目一样的。(P269) 题目这个题目的题意很容易理解,在一个N*M的格子里,我们现在有两种类型的 砖块,1 * 2 和 2 * 1,问一共有多少种方案,可以将整个N*M的空间都填满。最简单的例子就是下面的了:编程之美中题目:某年夏天,位于希格玛大厦四层的微软亚洲研究原创 2012-08-08 12:37:40 · 15184 阅读 · 6 评论 -
POJ 3278 第一道BFS 100题 纪念一下
题目在 http://poj.org/problem?id=3278这个题目过的还是比较艰难的,主要是因为我没有一下子用最好的办法做,很多时候,还是没有完全区分开什么时候用BFS, 什么时候用DFS再做几个题目慢慢总结吧,不过做了这个题目就有100道题目了,继续加油呀~ Fight For oFFersSource CodeProblem: 3278原创 2012-08-10 15:02:12 · 1287 阅读 · 0 评论 -
POJ 3009 DFS +剪枝
题目在http://poj.org/problem?id=3009因为DFS写的不多,所以这个看似很简单的题目,居然修改补补搞了3个多小时,哎。题目大意是说在一个迷宫中,我们的小球从起点出发,然后只能被横向和竖向抛出,如果打到障碍物,小球就会停止,同时障碍物也会被击碎。小球可以抛掷一个方向的前提是:它的前面没有障碍物。如果小球出界或者抛出次数大于10 都是失败。例如开始原创 2012-08-10 11:50:30 · 1094 阅读 · 0 评论 -
POJ 2488 DFS
题目在http://poj.org/problem?id=2488这个题目尝试用 collabedit写,虽然做了检查,不过依然不能做到bugfree。题目比较简单#include #include #define MAX_GRID 26#define MOVE_WAY 8int g_Board[MAX_GRID][MAX_GRID];int g_nRow, g_nC原创 2012-08-09 16:46:06 · 950 阅读 · 0 评论 -
POJ2513-Colored Sticks 并查集 + Trie + 欧拉路 很综合的题目
因为原文解释的很到位,所以转了,自己写代码好了 http://user.qzone.qq.com/289065406/blog/1304742541大致题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。 解题思路:可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把转载 2012-08-09 15:31:39 · 5827 阅读 · 0 评论 -
Linklist Merge Sort(微软等面试一百题-链表排序)代码
因为自己写程序栽在这个问题上了,所以就手写+机试的敲了一下,虽然很小心,但是机试的时候依然写出了bug,所以发这篇帖子算是让自己长长记性吧。问题如下:1.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法代码如下:#include #include struct LinkNode{ int data; LinkNode *pNext; LinkNode(in原创 2012-07-25 14:54:52 · 1887 阅读 · 0 评论 -
POJ 3254 状态压缩DP
题目在http://poj.org/problem?id=3254。趁热打铁,之前完成一道应该是比这道要稍微难一点的状态压缩DP, 并且做了比较详细的分析连接在这里http://blog.csdn.net/hopeztm/article/details/7841917因为我属于ACM初级选手,所以喜欢按照类型做题,这道题目以及接下来的几个题目应该属于对状态压缩DP的练习。原创 2012-08-08 18:58:34 · 1476 阅读 · 0 评论 -
POJ 1185 炮兵阵地(想半天没有想通,转一个解释)
炮兵阵地Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 2762 Accepted: 776Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能转载 2012-08-09 07:44:26 · 1576 阅读 · 0 评论 -
Facebook Online Puzzle 在线测试—题目和答案
最近在面FB,虽然没有抱什么特别大的希望,不过还是很值得全力以赴准备一下的。准备的过程会把自己变的强大上一周做了HR给的Online Puzzle Question,比想象的简单的多。Online Puzzle Test应该是准备给进入面试流程的Interviewee的一个编程基础能力测试,使用的提交平台是第三方的Interview street,感兴趣的同学可以去(https://www原创 2012-08-06 22:21:59 · 5183 阅读 · 2 评论 -
2012搜狗校园招聘笔试题
1. 选出程序输出的结果#include using namespace std;int main(){ short input[10]={'A','B','C','D','E'}; unsigned char *p=(unsigned char*)&input; int s=0; int temp=sizeof(input); for原创 2012-09-22 21:05:38 · 5911 阅读 · 8 评论