码迷,mamicode.com
首页 > 其他好文 > 详细

最短摘要问题

时间:2014-07-25 02:21:34      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   re   c   问题   代码   div   

/*
最短摘要问题,给一定字符串序列 wo,w1,w2,w3,op1,w4,op2,w5,op1,w6,w7,op1,op2,指定关键字符串为op1,op2,求包含关键字的最小字符串序列。
常见于搜索引擎的分词,op1,op2这里没有顺序,否则就更复杂了,最短序列为op1,op2。
思路:
(1)第一次扫描要包含全部关键词,送wo扫描到op2,即w0,w1,w2,w3,op1,w4,op2,随后左边逐渐缩小,知道第一次不全包含关键字为止(在扫描时候
就记录最短的),即w4,op2.此时移动右面知道第一次包含全部,即w4,op2,w5,op1.随后同理,左边逐渐缩小到又不全部包含关键字即为w5,op1,此时
右边继续扩展知道op2出现,即w5,op1,w6,w7,op1,op2,随后左边继续缩小即,op2 ,然后右边向右越界退出。最小为op1,op2
*/

//伪代码如下
int nTargetLen=N+1;
int pBegin=0;
int pEnd=0;
int nLen=N;
int nAbstractBegin=0;
int nAbstractEnd=0;

while(true)
{
    while(!isAllExisted()&&pEnd<pLen)
        pEnd++;
    while(isAllExisted())
    {
        if(pEnd-pBegin<nTargetLen)
        {
            pAbstractBegin=pBegin;
            nAbstractEnd=pEnd;
            nTargetLen=pEnd-pBegin;
        }
        pBegin++;
    }
    if(pEnd>=N)   //pEnd最大到N-1,如果到N了说明越界了,结束
        break;
}

最短摘要问题,布布扣,bubuko.com

最短摘要问题

标签:style   blog   color   re   c   问题   代码   div   

原文地址:http://www.cnblogs.com/zmlctt/p/3866663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!