数据结构和算法
文章平均质量分 64
xiongbixb2
这个作者很懒,什么都没留下…
展开
-
最长公共子序列
最长公共子序列与编辑距离很相似,以下是代码#include "stdafx.h"#includeusing namespace std;#define Max 100int longestcomstr(char * str1,char * str2,int len1,int len2,int c[][Max],int b[][Max] ){ for(int i=0;i<=len1;原创 2015-05-14 21:31:33 · 287 阅读 · 0 评论 -
一道百度笔试题
今晚做的,考试时没做出来,考完做出来了。算加减乘除的,方法是用数组存储中间变量,但是边界条件调试了好久。#include#include#includeusing namespace std;int chartoint(char *p,char *q){ char *cur=p; int num=0; while(cur<=q) { num=num*1原创 2015-09-17 21:30:58 · 264 阅读 · 0 评论 -
阿里巴巴2014研发工程师实习生面试经历
java研发工程师的初面是在上周三进行的,最终结果到了晚上才出,而没有通过的则是一结束网上就更新了状态。之后阿里通知这周三,也就是今天进行二面。 凑巧的是今早被舍友吵醒,中午那个困啊,但没时间睡了,导致下午晕乎乎的,在面试的等候区时还差点进错了厕所……说多了都是泪,还是赶紧切入正题吧。 面试是1对1的,旁边还放了个椅子,貌似是留给HR的,但是我看其他桌的也都是一个面转载 2015-11-08 10:39:25 · 422 阅读 · 0 评论 -
最长递增子序列详解(longest increasing subsequence)
一个各公司都喜欢拿来做面试笔试题的经典动态规划问题,互联网上也有很多文章对该问题进行讨论,但是我觉得对该问题的最关键的地方,这些讨论似乎都解释的不很清楚,让人心中不快,所以自己想彻底的搞一搞这个问题,希望能够将这个问题的细节之处都能够说清楚。对于动态规划问题,往往存在递推解决方法,这个问题也不例外。要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要先求出序列Ai-1{a1,转载 2015-11-08 11:45:11 · 280 阅读 · 0 评论 -
AC算法详解
AC算法是Alfred V.Aho(《编译原理》(龙书)的作者),和Margaret J.Corasick于1974年提出(与KMP算法同年)的一个经典的多模式匹配算法,可以保证对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关。正如KMP算法在单模式匹配方面的突出贡献一样,AC算法对于多模式匹配算法后续的发转载 2015-11-08 11:59:27 · 476 阅读 · 0 评论 -
SIFT 特征提取算法总结
主要步骤 1)、尺度空间的生成; 2)、检测尺度空间极值点; 3)、精确定位极值点; 4)、为每个关键点指定方向参数; 5)、关键点描述子的生成。 L(x,y,σ), σ= 1.6 a good tradeoff转载 2015-11-08 11:51:54 · 532 阅读 · 0 评论 -
经典的lcs问题(输出公共子序列)
这个问题疑惑了很久,只知道求公共子序列长度,不会求子序列。代码贴出如下:#includeusing namespace std;#include#includeint chang[1000][1000]={};int flag[1000][1000]={};char * lcs(char *a,char *b){ int len1=strlen(a);原创 2015-10-23 12:30:44 · 313 阅读 · 0 评论 -
求最长递增子序列长度并输出序列
using namespace std;#include#include/*int lis1(int a[],int n){ int *len=new int[n]; len[0]=1; for(int i=1;i<n;++i){ len[i]=1; for(int j=i-1;j>=0;--j) { if(a[i]>a[j]) { len[i]=原创 2015-10-23 16:03:17 · 1642 阅读 · 0 评论 -
网易cc题1
题目1 : buycrystal时间限制:5000ms单点时限:1000ms内存限制:256MB描述CC最近推出了一个新玩法,玩家可以通过金币来买卖水晶,水晶价格随着玩家的卖入卖出进行浮动,但水晶不能连续购买,并且每次只能买一个,第二次购买前需要将上次购买的卖掉。用一个数组表示水晶每天的价格,数组的第i个数表示水晶在第i天的价格。如果只允许进行两次交易,求最大的收益。原创 2015-10-23 18:44:37 · 621 阅读 · 1 评论 -
hihoCoder#1052 基因工程
找规律题如果首尾如果不交,那么不一样的位数就是需要变换的次数。如果首尾相交,似乎比较复杂,所以找找规律。 假设字符串是这样的(上下是同一个字符串,只是为了方便描述首尾部分而分开画的),要让蓝色的首尾部分相同: 因为是一个字符串,所以虚线部分相同。 即,下图中红色方框部分相同。 因为蓝色首尾部分相原创 2015-09-19 21:28:58 · 348 阅读 · 0 评论 -
网易cc题2
简单的字符串抽取,按顺序遍历即可,复杂度o(n+m)题目2 : crossgift时间限制:5000ms单点时限:1000ms内存限制:256MB描述话说有个网易CC主播lily唱歌很好听,但是她粉丝很多,每次都有很多人要点歌。聪明的Lily想了个办法,她列出了两组礼物清单,并要求粉丝们按照清单来送礼物,送出的礼物既不能多,也不能少。而且如果是属于同一个原创 2015-10-23 19:07:57 · 541 阅读 · 0 评论 -
网易cc题3
这道题困扰了我两个月,终于还是用trie图的方法做出来了。题目3 : giftscount时间限制:8000ms单点时限:1000ms内存限制:256MB描述网易CC里,有很多礼物(总数种礼物),每一种礼物都有一个编号ID,系统里使用1到10位的数字串(其实是字符串,只不过刚好是数字而已)来表示这个ID,如3个礼物ID:{44, 45, 47原创 2015-10-23 20:57:34 · 528 阅读 · 0 评论 -
京东的一道代码题
题意是:有n*m个方格,每个方格放了价值为v的物品,从左上角走到右下角,只能往下或往右走,只可选择捡起(也可不捡)比现在拥有的价值大的物品。输入:n(行),m(列),k(捡的物品数),n*m个物品价值输出:有多少种走法。考虑结果可能比较大,需把结果对1000000007求模。例子:2 2 21 22 1输出:2代码如下:#include#include原创 2015-09-23 23:14:27 · 288 阅读 · 0 评论 -
works的题
很简单,但是要快,15min做出来无漏洞代码。很可惜我没做到。题一:求最长连续递增子序列,例如:1345256783,输出:25678题二:求最长的连1或连0,例如:1110000111110,输出:11111题三:没看到题四:求最长连续加一子序列,例如:12345345456,输出:12345代码如下:#includeusing namespace std;原创 2015-10-28 12:59:24 · 326 阅读 · 0 评论 -
网易互联网一道编程题
题目在图片中,输出结果为3。当时没做出来,第二天搞了一上午。思路是先排序,再归并,再求前缀和与后缀和,然后计算最大差值。#include#include#include //包含了using namespace std;int main(){ int n,m; cin>>n; int *a=new int[n]; for(int i=0;i<n;++i)原创 2015-09-17 10:47:53 · 303 阅读 · 0 评论 -
全排列代码
#includeusing namespace std;void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void permu(int list[],int k, int m){ if(k>m) { for(int i=0;i<=m;++i) cout<<list[i]; cout<<endl;原创 2015-10-18 17:10:00 · 607 阅读 · 0 评论 -
kmp算法(很短很清晰)
#include #include #include using namespace std;int main(){ char t[10050],s[1000007]; int c;scanf("%d",&c); while(c--) { scanf("%s%s",t,s); int flink[10004]={};原创 2015-06-27 15:21:23 · 348 阅读 · 0 评论 -
多路归并使用败者树的性能分析
编程珠玑第一个case是有关一个技巧性解决外部排序问题的。问题很巧妙的解决了,但一开始提到的利用归并排序进行外部排序的算法仍值得仔细探究一下,毕竟本科时学的不是很深入。先来看内部排序中最简单的2路归并排序算法。算法核心操作是将一维数组中前后相邻的两个有序序列归并为一个有序序列,给定数组中序列界限i、m、n,用2个下标变量分别从i和j=m+1开始逐个往后处理,先比较,小的写到结果序列转载 2015-06-27 21:16:52 · 1708 阅读 · 0 评论 -
trie树(简单版本)
trie树简单版#include#include#includeusing namespace std;struct node{ int next[26]; int cnt; void init() { cnt=0; memset(next,-1,sizeof(next)); }}T[1000000];原创 2015-06-27 15:31:30 · 288 阅读 · 0 评论 -
两道网易ttt编程题
1.pku 1088滑雪这道题我在笔试的时候用贪心法,得了0分;后来想到了用泛洪的方法,算法效率差;正确答案是用深搜+动态规划。#include#includeint R,C;int a[101][101];//各点高度int f[101][101];//各点最大滑雪长度inline int max(int a,int b){return a>b?a:b;}in原创 2015-07-04 23:17:00 · 342 阅读 · 0 评论 -
简单有效的图像去雾技术CVPR 2009 BEST
出处:http://blog.csdn.net/abcjennifer/article/details/6662706真正了解了什么叫最简单的就是最美好的真正的好文章不需要大堆公式堆积显得充实,而是最最平实的思想!这篇文章的:原文PDF、数据集、幻灯片、视频。感兴趣的可以了解一下。这篇文章的目的就是以最简单的思路将图像达到去雾效果。用Matlab编了转载 2015-07-22 22:40:39 · 780 阅读 · 0 评论 -
分布式系统之Quorum (NRW)算法
基于Quorum投票的冗余控制算法Quorom 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理。在有冗余数据的分布式存储系统当中,冗余数据对象会在不同的机器之间存放多份拷贝。但是同一时刻一个数据对象的多份拷贝只能用于读或者用于写。该算法可以保证同一份数据对象的多份拷贝不会被超过两个访问对象读写。算法来源于[Gif转载 2015-09-25 12:55:11 · 981 阅读 · 0 评论 -
hihocoder1015-kmp
输入第一行一个整数N,表示测试数据组数。接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不超过10^6个大写字母组成。其中N输出对于每一个测试数据,按照它们在输入中出现的顺序输出一行Ans,表示模式串在原串中出现的次数。样例输入5HAHAHAHAWQNWQNADAADA原创 2015-09-26 20:32:16 · 301 阅读 · 0 评论 -
滴滴第一题
方法:先求前缀和,将pair加入multimap中,搜索每一种前缀和的lowerbound和upbound,计算两者之差,与前缀和为零的标号比较,取最大值。#include#include#include#includeusing namespace std;#define N int main(){ int c; cin>>c; int * a=new原创 2015-09-25 22:46:23 · 642 阅读 · 0 评论 -
编程题:死锁检测工具
这个题目做了一晚上,确定最终方案是:倒排索引+记忆搜索。用一个hashmap存储倒排索引,一个hashmap存储各进程#includeusing namespace std;#includestruct ListNode{ int val; ListNode *next; ListNode(int i):val(i),next(NULL){}}; //ListNode*原创 2015-10-17 00:02:19 · 378 阅读 · 0 评论 -
不是hihocoder 1111 只是算哈弗曼编码长度
#1111 : Huffman编码时间限制:30000ms单点时限:3000ms内存限制:256MB描述给定一个大小为n的字符集Σ中每个字符出现的频数,求不同的Huffman编码的数量模109 + 7。一个编码是一个从Σ到01字符串的函数。 一个Huffman编码是一个由以下过程生成的编码:初始时每个字符为一个集合。初始时所有字符原创 2015-10-17 12:57:51 · 475 阅读 · 0 评论 -
hihocoder 第68周 题目1 : Lost in the City
此题只得了30分,但思路没有错误。可能是边界条件有问题。和图像的模板匹配有些相似。题目1 : Lost in the City时间限制:10000ms单点时限:1000ms内存限制:256MB描述Little Hi gets lost in the city. He does not know where he i原创 2015-10-18 16:47:25 · 309 阅读 · 0 评论 -
格雷码代码
#includeusing namespace std;#includevector graycode(int n){ vector res; res.reserve(1<<n); res.push_back(0); for(int i=0;i<n;++i) { int highbit=1<<i; for(int j=res.size()-1;j>=0;--j)原创 2015-10-18 17:33:03 · 377 阅读 · 0 评论 -
leetcode 139 Word Break(阿里测试岗笔试题)
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, givens = "leetcode",dict = ["leet"原创 2015-10-18 19:57:37 · 415 阅读 · 0 评论 -
java的一些简单题
1. String str1,str2,str3,str4; str1=new String("hello world"); str2="hello world"; str3="hello world"; str4=new String(str1); System.out.println(str1.equals(str2)); System.out.printl原创 2015-11-02 14:01:56 · 308 阅读 · 0 评论