hdu 1867 A + B for you again
来源:互联网 发布:ubuntu16安装php 编辑:程序博客网 时间:2024/06/05 05:23
一开始wa了很多把, 最后发现自己和之前做的另一道KMP题目搞混了.
这题子串不能出现在句中.
#include <stdio.h>#include <string.h>#define N 1000002 #define M 1000002 char a[M], b[N];int Next[N];void getNext(char s[], int len){ int i, j; i = 0; j = -1; Next[0] = -1; while (i < len) { if (j == -1 || s[i] == s[j]) ++i, ++j, Next[i] = j; else j = Next[j]; }}int KMP(const char a[], const char b[], int pos, int next[], int la, int lb) { int i, j; i = pos, j = 0; while (i < la) { if (j == -1 || a[i] == b[j]) ++i, ++j; else j = next[j];if(j==lb&&i<la)// 因为不能在主串中间,所以主串没跑完,不能退出{j=0;} } return j;}int main() {int numa,numb,lena,lenb; while (scanf("%s%s",a,b)!=EOF)// 注意下 之前打成NULL 一直OLE { lena=strlen(a);lenb=strlen(b); getNext(b , lenb); numb=KMP(a, b, 0,Next, lena,lenb);getNext(a , lena); numa=KMP(b, a, 0,Next, lenb,lena);if(numa>numb){printf("%s%s\n",b,a+numa);}else if(numa<numb){printf("%s%s\n",a,b+numb);}else //之前比较整合后 的字典序 没想到只用考虑 a,b原来的字符串的字典序{if(strcmp(a,b)<=0)printf("%s%s\n",a,b+numb);elseprintf("%s%s\n",b,a+numa);} } return 0;}
0 0
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- HDU-1867-A + B for you again
- HDU 1867:A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- hdu 1867 A + B for you again
- Hdu-1867 A + B for you again
- hdu 1556 树状数组
- UVa 1422 Processor 解题报告(二分)
- wordpress如何精简导航代码
- 1、scp命令
- poj 1182 食物链并查集
- hdu 1867 A + B for you again
- rsync命令:
- cocos2d-x 精灵添加描边效果
- Eclipse 错误;找不到或无法加载主类(转)
- 位运算
- php 生成水印图片 完整过程 NFS自动同步刷新varnish缓存
- uva 253(数学)
- stdint.h
- Discuz7.2 IE和chrome等浏览器兼容性写法 杜工完全修补方案