摘要: 题目链接:http://acm.hrbust.edu.cn/vj/index.php?c=problem-problem&id=190592题意:给出p*q的棋盘,从(A,1)开始,走“日”字,问能否走完棋盘上所有的点,如果能,按字典序输出路径;思路:DFS,并保存路径即可,注意处理走的方向顺序in... 阅读全文
posted @ 2014-09-18 23:51 一缕阳光~~ 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1125题意:应用Floyd求每对顶点间的最短距离,简单题 1 # include 2 # define INF 10000 3 int map[110][110], dist[110][110]; 4 int n; 5 void init() 6 { 7 for(int i=1; i max)55 {56 57 max = map[i][j];58 }59 }60 if(... 阅读全文
posted @ 2013-11-06 18:31 一缕阳光~~ 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2594题意前面一堆废话,就是问给出两个字符串s1和s2,问s1的前缀和s2的后缀最大匹配的数量,这很容易让人想到KMP中求next数组的方法,所以这里可以把s1,s2连接起来,strcat(s1,s2)该函数的作用就是把s2连接到s1的末端连接完之后就是对串s1进行求next代码详见kMP,接下来就是判断next[k]与len1和len2的关系如果next[k]大于len1或len2,则继续回溯k=next[k];这样判断next[k]是否为零,为零则没有匹配,不为零输出next[k]即是最大的匹配数 阅读全文
posted @ 2013-04-18 18:24 一缕阳光~~ 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3746题意就是给出一个字符串,让你可以在左边或者右边添加一定数量(输出最小数量)的字符使其可以成为一个有循环的最小长度的圆,不可以从中间插入字符,因为最终是要连接成一个圆,所以无论从左边还是右边添加最后效果都是一样的,下面考虑从右面开始添加这题主要是对KMP中next数组的应用,另外还有循环节的小技巧假设字符串长度为len,那么求出next[len]即为该串后缀与前缀的最大匹配数,那么需要构成最小长度圆的循环节长cir=len-next[len];所以说当len%cir==0 && l 阅读全文
posted @ 2013-04-18 18:01 一缕阳光~~ 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1841本题的意思就是给出两个字符串,看一下能组成最短的串的长度,当然只能首尾连接这题也是对KMP的应用,主要还是对next数组的的求解这题大概应该有两个地方需要注意的1.开始写这题我直接就把串连接为S=S1+S2和S=S2+S1这两种情况,然后比较取S串最短的那种比如样例中alba和bacau,则可以组成alba(ba)cau和串bacaualba显然前者组合方式可以取得最短串S对于判断过程,则可以考察串s1的前缀和s2的后缀或者是s1的后缀和s2的前缀最大匹配程度,这个过程中就可以将他们连接到一个串 阅读全文
posted @ 2013-04-18 17:44 一缕阳光~~ 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3336//这题的题意就是给出一个字符串S,求其前缀的子串与该串共有多少个匹配开始这题理解错题意了,后来明白就简单多了,不过这题有两个优化,要不容易超市1.对于其子串不必求出所有子串的next数组,只需要求出原串的next,其子串的next则也包含在内2.当调用KMP时某子串只匹配了一次,那么下面则无需再次调用KMP,解释:如果S是abcabcd,那么当abca只出现一次那么后面所有前缀子串则只可能匹配一次,例如子串abcab,abcabc,等代码如下View Code 1 # include < 阅读全文
posted @ 2013-04-17 17:09 一缕阳光~~ 阅读(173) 评论(0) 推荐(0) 编辑