
字符串和数组
文章平均质量分 54
acm_JL
这个作者很懒,什么都没留下…
展开
-
hdu 1867 A + B for you again
题目大意:两个字符串合并成一个,串1的后缀和串2前缀相同部分只出现一次,不固定串1串2,要求合并后串长最小,如果有等串长的两种情况出现,取字典序小的。Sample Inputasdf sdfgasdf ghjk Sample Output asdfg asdfghjk原创 2016-03-22 15:06:31 · 541 阅读 · 0 评论 -
kmp模式匹配算法
#include #includeusing namespace std;void get_next(char*t, int next[ ]){//确定匹配失败的时候模式串返回的位置 int t_len=strlen(t); int i=0; //求解每个next[i] next[0]=-1; //递推基本条件,然后求解next[i+1] int j=-1;原创 2016-03-22 10:22:45 · 684 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace
题目大意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。例子:abcabc 已经循环2次,添加数为0abcac 没有循环2次,添加字符abcac。数目为5.abcabcab 已经循环过2次,但第三次不完整,需要添加数为1算法分析:利用kmp的next数组的性质,我们先得到next数组,字符串长度为len,如果next[len] == 0说明这个字符串没原创 2016-03-22 16:10:47 · 383 阅读 · 0 评论 -
POJ 3080 Blue Jeans
题意:就是求k个长度为60的字符串的最长连续公共子串,21、 最长公共串长度小于3不输出。2、 若出现等长的最长的子串,则输出字典序最小的串。算法思路:按字符串的长度由短到长进行快排。枚举第一个字符串的不同长度子串,判断她是否为下面多有的公共子串?如果是的话,那么我们就表明找到,则比较其长度,如果比已经找到的串长,那么就替换结果串 否则按字典序比较。取字典序考前的,就可以。原创 2016-03-22 20:15:40 · 468 阅读 · 0 评论 -
POJ 3461 Oulipo
给两个字符串,在目标串里找到模式串的个数。#include #include char text[1000005];char word[10005];int next[10005];//改进后的next数组,速度更快void get_next() { int j = -1, i = 0; next[0] = -1; while(word[i] !=原创 2016-03-22 20:23:11 · 423 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame
题目大意 :给定一个字符串,求其相同前缀后缀的长度,由小到大输出所有情况题目分析 :用到KMP算法中的next数组,本题时next数组的一种新用法,要深刻理解next数组的含义,由KMP算法的原理可知,通过遍历next[len], next[next[len]].....可以得到所有同时满足是原串的前缀和后缀的子串长度.下标 : 0 1 2 3 4 5原创 2016-03-22 20:35:16 · 331 阅读 · 0 评论 -
高精度-加法
#include#include#include#include#includeusing namespace std;#define MAX 1010int a[MAX], b[MAX];int main(){ int N, len1, len2, i, k, up, tmp, ncase = 1; string str1, str2; scanf("%d", &N);原创 2016-03-22 22:14:33 · 616 阅读 · 0 评论 -
高精度--乘法
#include #include #include using namespace std;void multiply(const char *a,const char *b){ int i,j,ca,cb,*s; ca=strlen(a); cb=strlen(b); s=(int *)malloc(sizeof(int)*(ca+cb));原创 2016-03-22 22:32:30 · 536 阅读 · 0 评论