Algorithm
文章平均质量分 64
lhcxx1987
这个作者很懒,什么都没留下…
展开
-
一道关于DP的ACM
<br />Problem Description:<br />Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.<br /> <br />这题的基本思想是:从头开使累加,当加到第原创 2010-07-06 05:22:00 · 451 阅读 · 0 评论 -
程序员面试题精选100题(49)-复杂链表的复制
<br /> 好久没写日志了,这些日子都在忙软工大作业和嵌入式论文等等,比较头疼的还有班级圣诞聚会,真麻烦,废话少说,办正事。<br /> 这个系列题目都比较好,我打算全部把他们做完,对于我来说,时间可能花的比较长,不过这是一个学习的过程,这道题目,我搞了2天,首先头疼的是单链表的操作还不是很熟悉,包括建立单链表。 下面的代码是实现了作者说的第一个思想,也就是最简单的O(n2) 的复杂度,代码包括测试代码。<br /> // 复杂链表的复制.cpp : Defines the ent原创 2010-12-20 02:35:00 · 590 阅读 · 0 评论 -
程序员面试题精选100题(48)-二叉树两个结点的最低共同父结点
<br /> 还是简单实现了作者的算法,对于何海涛非常敬佩。实现过程中遇查找树中某一个值的结点的函数,通过一个队列来实现,建树过程中不小心输入失误,一开始以为是前面的算法错了, 后来调试发现,其实是输入的顺序错误。<br /> // 二叉树两个结点的最低共同父结点.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<queue>原创 2010-12-25 04:41:00 · 729 阅读 · 0 评论 -
poj 2136 Vertical Histogram
<br /> 输入输出的水题,唯一值得学习的就是字符于整数的转换。'B'-'A'=1; B=char('A'+1);<br /> #include<iostream>#include<fstream>#include<string>using namespace std;int main(){ ifstream cin("d://1.txt"); int charNum[26]; memset(charNum,0,sizeof(charNum)); for(int原创 2010-11-05 02:35:00 · 577 阅读 · 0 评论 -
程序员面试题精选100题(07)-翻转句子中单词的顺序
<br /> 这题如果用标准库Vector来做,或者用栈来做的话,代码没几行,但是不用这些的话,自己写还是需要考虑一下的,特别是像对于我这种在语法上还是不怎么熟悉的同学。<br /> // 翻转句子中单词的顺序.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<string>#include<vector>using n原创 2010-12-29 03:03:00 · 490 阅读 · 0 评论 -
poj 1308 Is it a Tree?
<br /> 不知道为什么不能AC,这道题有2个地方特别要注意,一个是注意空树的情况存在,另外一个是在分配链表的时候别忘记了释放内存空间,不然会导致错误。<br /> #include<iostream>#include<vector>#include<cmath>#include<string>#include<fstream>#include<stack>using namespace std;const int MAX_NODE=5120;struct Ed原创 2010-11-05 02:32:00 · 386 阅读 · 0 评论 -
程序员面试题精选100题(13)-第一个只出现一次的字符
<br /> 使用C++ map实现,比较简单。<br /> // 程序员面试题精选100题(13)-第一个只出现一次的字符.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<string>#include<map>using namespace std;char FirstNotRepeatingChar(ch原创 2010-12-30 03:10:00 · 446 阅读 · 0 评论 -
Poj 1578 --Instruens Fabulam (血泪控诉,无数次的调试,无数次的错误弹出,4天时间,终于AC,激动难于言表,成就感超强)
<br /> 都不知道怎么写了,刚刚调试成功,而且是完美成功,顺利AC,这道题目上周四开始做的,整整4天的调试,题目不难,但是涉及到的因素很多,调试起来也很麻烦,当然对我这种菜鸟来说是这样的,高手可能很快就能搞定,不过慢慢的在进步,我很高兴。<br /> 这道题目主要花在输入的控制上面,和前面的题目不一样,这道题从文件输入不好控制,因为每次都是从头开始读的话就会陷入死循环,所以调试起来相当麻烦,每次得硬键盘输入,非常痛苦。<br /> 好几次都想放弃,实在是太麻烦了,但是还是最终坚原创 2010-11-08 02:47:00 · 1491 阅读 · 0 评论 -
poj 2121 English-Number Translator
<br /> 题目比较简单,主要用到map关联容器,还有一个问题,我一般对于一个字符串通过空格分隔,对于这样的处理,我一般采取把字符串分割到一个向量中,但是后来知道有一个更好的方法,直接使用istrstream 定义串流 istrstream istr(src,len) ,然后输入的时候 while(istr>>s)就可以达到效果,因为istrstream是通过空格来分割的。<br /> #include<iostream>#include<fstream>#include<str原创 2010-11-09 03:25:00 · 1264 阅读 · 0 评论 -
poj 1706 References
<br /> 这个题目调试起来比较麻烦,主要学习到三个方面。<br /> (1)一开始我的if嵌套很多,导致代码缩进很深,这样不容易读懂和调试,所以采用 if()-continue方法来减少缩进,这点值得学习<br /> (2)isdigit()这个函数还真有,还有strcpy(),strcat()更加深入了解一些<br /> (3)研究一下string对象是不是结尾以'/0'结束,我猜测不是,而且通过c_str()函数返回的字符串是const类型的,这点突然让我想到今天看到<<Java 经典实例原创 2010-11-18 03:20:00 · 1099 阅读 · 0 评论 -
插入排序
<br />把数据结构书上的插入排序实现了一下,比较简单<br />#include<iostream>#include<fstream>#define MAX 9using namespace std;void InsertSort(int (&a)[MAX]){ for(int i=2;i<=MAX;i++) if(a[i]<a[i-1]) { a[0]=a[i]; a[i]=a[i-1];原创 2010-10-24 23:08:00 · 367 阅读 · 0 评论 -
杭电2151 简单DP
<br />这是一道简单的DP算法,只要掌握状态函数 a[M][T]=a[M-1][T-1]+a[M-1][T+1]就可以了<br />#include<iostream>#include<fstream>using namespace std;int main(){ ifstream cin("d://1.txt"); int N,P,M,T; int a[110][110]; while(cin>>N>>P>>M>>T) {原创 2010-10-22 03:00:00 · 660 阅读 · 0 评论 -
快速排序算法
花了几个小时写了快速排序的算法// package.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;int a[100],n,temp;void QuickSort(int start,int end)原创 2010-05-19 04:48:00 · 409 阅读 · 0 评论 -
编程珠玑 一维向量左旋转
<br /> 今天看了编程珠玑上面的一道题目,书本11页第二章算法,感觉很有趣,特别是第三个实现的算法,非常巧妙,解决这个问题有三个算法,第一个也是最容易想到需要额外的分配i个空间,第二种算法我还是不怎么理解,没实现,第三种算法最精彩,也是最容易实现,深刻体会到简洁就是美的自然法则.<br /> <br /> 算法一实现:<br /> string Reverse(string &s, int n){ int i,j; string temp; temp=s.substr(0原创 2010-12-03 01:17:00 · 546 阅读 · 0 评论 -
poj1028--Web Navigation
<br /> 这道题目的算法题中已经给出来,就是利用两个栈来协同工作,用笔在纸上模拟一翻就可以得出答案,注意的是遇到VISIT操作的时候,最后一步要清空Forward栈。<br /> // Web Navigation.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<fstream>#include<algorithm>原创 2010-12-04 21:07:00 · 625 阅读 · 0 评论 -
poj 1107 --W's Cipher
<br /> 这道题主要是计算下标需要注意,这点上合循环队列很相似,(i+k1)%length求出相对位置。<br /> // W's Cipher.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<fstream>#include<string>#include<vector>using namespace std原创 2010-12-04 23:45:00 · 669 阅读 · 0 评论 -
Poj 1035 --Spell checker
<br /> 这题学到了很多很多知识,首先是string::insert,string::erase 这两个方法,http://www.cplusplus.com/reference/string/string/erase/ 这个网站非常好,可以查到STL库函数,而且都是有例子来说明,简明扼要,精彩的是把所有重载的方法在一个程序里面全部举出例子。第二个是在运行程序的时候发现Dev-C++的MinGW编译器和vs2010的编译器在实现方面有差别,主要是向量越界检查这一点,MinGW是不检查,而vs201原创 2010-12-04 04:23:00 · 674 阅读 · 0 评论 -
poj 1102--LCDisplay
<br /> 这题首先纠结在atoi函数的参数,是const char类型的,但是通过循环string[i]是char类型的,所有需要转换才能调用atoi函数,正好网上找了一下,char to const char 和const char to char , const char* 转换成char*只能新开辟空间, 然后通过strcpy()函数来实现,char *转换成const char*直接赋值就可以,其实后来想到不需要那么复杂,直接9='9'-'0'可以了,第二点在与逻辑的处理上,一开始我写的很原创 2010-12-04 16:10:00 · 558 阅读 · 0 评论 -
poj 1298- The Hardest Problem Ever
<br /> 水题,不解释。<br /> // The Hardest Problem Ever.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<fstream>#include<string>#include<vector>using namespace std;int _tmain(int argc, _T原创 2010-12-06 02:24:00 · 446 阅读 · 0 评论 -
杭电2084 数塔 DP
不知道为什么一直没有AC,检查不出什么错误。郁闷#include#includeusing namespace std;int amax[100][100];int a[100][100];int N;int maxSum(int i,int j){ if(i==N)return a[i][j]; if(amax[i+1][j]==-1) amax[i+1][j]=maxSum(i+1,j); if(amax[i+1][j+原创 2010-10-22 23:52:00 · 482 阅读 · 0 评论 -
希尔排序
<br />把数据结构书上的希尔排序算法实现了一下,通过向量来实现<br />#include "stdafx.h"#include <iostream>#include<fstream>#include <vector>#include<algorithm>#include <stack>#include <cmath>#include<string>using namespace std; void ShellInsert(vector<int> &v,i原创 2010-10-24 06:47:00 · 340 阅读 · 0 评论 -
ZOJ 2508 ---A Less Simple Task in Windows
<br /> 昨天晚上搞了通宵,没成功,结果还是差了一些,是在是头晕脑胀,参看源代码,这题的数据结构设计比较巧妙。<br /> // A Less Simple Task in Windows.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<fstream>using namespace std;const int原创 2010-11-19 21:39:00 · 669 阅读 · 0 评论