Poj
werflychen
曾经在腾讯百度从事过后台开发,现在一个券商从事后台开发,chenwenh@foxmail.com
展开
-
poj 1256
这是一道全排列的题目,原来经过修改,代码可以写得如此精炼!/* Poj 1256, Wroter by Dream Chen, 2010/12/12*/#include #include #include using namespace std;char str[20];int length = 0;inline bool cmp(char a, char b){if (tolower(a) == tolower(b)){return a }elsereturn tolower(a) }int main(v原创 2010-12-12 20:13:00 · 741 阅读 · 0 评论 -
poj 1686 表达式求值判断
这题考查两个点1、先将算术表达式转换成后缀表达式,转换原理可以参考这个博客,写得非常详细http://blog.csdn.net/antineutrino/article/details/67637222、再对后缀表达式这里算值。小心:这里输入必须要整行读入,因为表达式中可能会揉进一些空格和tab,所以使用cin读入会出错。另外,混合使用cin和cin.getline时,使用c原创 2013-12-21 16:53:34 · 1425 阅读 · 0 评论 -
二分搜索的巧妙应用
今天同事问我一道算法题,题目是这样:给定一个递增循环整数数组,从里面找出最小的元素,使用的算法越快越好。特别地,最小的元素可能出现在数组中间。比如:50, 52, 63, 90, 3, 8, 15, 44。解析:这里有条件:1、递增。2、循环对于有序的数组,二分搜索一般是解决此类问题的利器,可以将时间复杂度从O(n)提高至O(log(n))。可这里却有一个较为苛刻的条件,是循环原创 2013-12-14 15:12:52 · 1715 阅读 · 0 评论 -
Poj 1936
<br /><br />字符串子串的匹配算法,可以逆向思考,巧妙地从尾到头进行匹配,速度极快。0ms<br />/*Poj 1936, by Dream 2011/5/16*/<br />#include <iostream><br />using namespace std;<br /> <br />char strChild[100010];<br />char strFather[100010];<br /> <br />int main()<br />{<br /> <br />while(EOF原创 2011-05-17 10:05:00 · 605 阅读 · 0 评论 -
poj1220
<br /><br />任意进制的转换,看起来简单,但写起来并非想像中的简单,注意基础环节的练习<br />/* Wrote by Dream Chen, 2010-12-23 */<br />#include <iostream><br />using namespace std;<br />int m = 0;<br />int k = 0;<br />char data[500];<br />char res[500];<br />void Solve();<br />inline int CharT原创 2010-12-23 21:52:00 · 867 阅读 · 0 评论 -
Tried树模板
<br />模板大致如下:具体用法可参见上篇Poj2503第三种解法struct TriedNode{ int No; TriedNode *branch[BRANCH_MAX];};TriedNode root;TriedNode node[10010];void Insert(char *word, char *re){ if (NULL == word) { return; } TriedNode *location = &root; while(*word)原创 2011-04-27 12:08:00 · 1020 阅读 · 0 评论 -
Poj 1035
<br /><br />这道题搞得还真不容易,一个=跟==,搞了自己近两个钟头。。。<br />用的是暴搜解决<br /> <br /> <br />/*Poj 1035, by Dream 2011/4/28*/<br />#include <iostream><br />using namespace std;<br /> <br />char dic[10010][20];<br />unsigned int totalNo = 0;<br />void DealWord(const char *wo原创 2011-04-28 17:53:00 · 643 阅读 · 0 评论 -
Poj 2503
一道相对简单又经典的题目,可以用多种方法进行求解。1、直接用stl map解决,水过。不过效率相对有差些。 907Ms/*poj2503, wrote by Dream Chen 2011/4/1*/#include#include#includeusingnamespace std;map map_word;voidGetWord(const string &srcline, string &first, string &second);intmain(){ string line;while原创 2011-04-25 09:38:00 · 2384 阅读 · 0 评论 -
Poj1703并查集
<br /><br />体会其中精髓的递归路径压缩算法<br /> <br />// Poj 1703, wrote by Dream 2011/2/22<br />#include <iostream><br />using namespace std;<br />int s[100002];<br />int f[100002];<br />int T, N, M;<br /> <br />void Union(int x, int y);<br />int FindFather(int x);<br原创 2011-05-13 15:38:00 · 671 阅读 · 0 评论 -
Poj 1269
<br />这是主要是判断两个直线的平面关系,用到的是向量叉积的运算。<br />主要是判断时候要注意分清判断的先后顺序,从特殊到一般的顺序进行判断,下面我就直接copy一位网友的解题思路,因为他已经很清晰了。<br /><br />一、问题描述<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1269<br />题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。<原创 2011-01-25 11:41:00 · 2798 阅读 · 0 评论 -
Poj 1258
<br />最小生成树算法,Prim,错误了n次,在于每次输入数据的时候,没有初始化数据,牢记教训!<br /><br />#include<iostream><br />using namespace std;<br />int vertex = 0;<br />int iMap[110][110];<br />int lowcost[110];<br />bool flag[110];<br />int sum = 0;<br />int findMin();<br />int main()<br />原创 2010-12-25 12:02:00 · 475 阅读 · 0 评论 -
poj 1050
近来工作时间比较不是很紧,闲来无事,刷道题。。这道题刚开始以为要使用暴搜去解决。看来有更优雅的做法。其本质还是最大子串值的求法。二维数组,想要求其子矩阵值的最大值,可以将其压缩成一个一维数据,则把问题化解为一个更简单的问题来求解。例如:0, -2, -7, 09, 2, -6, 2可以压缩成一个一维数据9, 0, -13, 2,用这种形式来算。剩原创 2016-12-28 17:06:08 · 351 阅读 · 0 评论