使用滑动窗口的思想来获取最短摘要,可以达到O(N)的时间复杂度。
http://ac.jobdu.com/problem.php?id=1397
#include <stdio.h>
#include <string.h>
#include <memory.h>
#define MAX 100010
char s[100010],p[100010];
int hash[10],movewindow[10],len1,len2,minlen;
int num; //滑动窗口中*的个数
bool IsAllExisted() //判断滑动窗口中是否包含所有的关键字
{
int i,temp=0;
for(i=0;i<10;i++)
{
if(hash[i]>movewindow[i]) //统计滑动窗口中包含摘要字符的个数小于摘要中对应字符的个数
temp+=hash[i]-movewindow[i];
}
if(num>=temp) //缺少的字符使用*来代替
return true;
else
return false;
}
int GetMinAbstract() //取得最短摘要
{
int i,start=0,end=len2-1;
minlen=MAX;
num=0;
for(i=start;i<end;i++) //初始化滑动窗口
{
if(s[i]=='*')
num++;
else
movewindow[s[i]-'0']++;
}
while(start<=end && end<len1)
{
if(s[end]=='*')
num++;
else
movewindow[s[end]-'0']++;
while(IsAllExisted())
{
if(end-start+1<minlen)
minlen=end-start+1;
if(s[start]=='*')
num--;
else
movewindow[s[start]-'0']--;
start++; //滑动窗口中包含摘要的时候,左边界向后移动,滑动窗口变小
}
//while循环退出的时候,滑动窗口中不包含摘要,此时右边界向后移动,滑动窗口变大
end++;
}
return minlen;
}
int main(void)
{
int i,n;
while(scanf("%s %s",s,p)!=EOF)
{
len1=strlen(s);
len2=strlen(p);
memset(hash,0,sizeof(hash));
memset(movewindow,0,sizeof(movewindow));
for(i=0;i<len2;i++)
hash[p[i]-'0']++; //统计每个关键字出现的次数
n=GetMinAbstract();
if(n==MAX)
printf("0\n");
else
printf("%d\n",n);
}
return 0;
}
如果使用二分搜索的思想可以达到O(N*lgN)的时间复杂度。
分享到:
相关推荐
这是九度OJ-题目1509:树中两个结点的最低公共祖先的测试数据,input.txt是输入数据,output.txt是输出数据。
九度OJ八皇后问题,主要是主对角线和副对角线的判断上面优化。在九度1140上面已经AC
使用vs2010编写,直接用vs2010打开加压后的.sln文件即可看到...九度OJ上面的剑指Offer习题全套答案,全部AC,且具有较好的时间复杂度。部分参考网络上的idea,但代码已经尽量要求简洁,是OJ练习不可多得的参考代码。
九度oj 题目1369:字符串的排列 剑指offer里面的题目 自己写的代码,供参考!
计算机机试指南九度OJ机试题目解析复试机试参考,适用于计算机考研的同学,文档整理汇总了各个分类,方便入门和刷题参考。
九度OJ为本系统改造的典型案例。 文档、社区服务见项目首页,http://code.google.com/p/hustoj/ 安装应用 下载应用安装包 应用首页 HUSTOJ特性 开源 全部采用开源技术,不仅仅是提供源代码,搭建HUSTOJ?不需要...
N皇后问题及其优化,主要是对角线和副对角线的判断上面的优化。输入要求的皇后数目n,输出有多少种排列的数目。 九度OJ1254已经AC
JobduOJ-InterviewQuestions九度OJ-剑指Offer解题代码这是九度OJ剑指Offer系列的解题代码,一共有51道题。
九度智能seo优化软件是一款针对搜索引擎的点击类软件。软件适用于百度、谷歌、360搜索、搜狗、搜搜、淘宝、天猫等等搜索引擎,可以用来提高...绝对是专业人士必备的seo优化软件,您值得拥有! 九度智能seo优化软件截图
完整可以用在二次开发,节约时间成本,
这个一份完全的05-12年的浙江大学计算机考研机试真题和源代码,全部通过九度OJ、杭电OJ、天勤OJ等的测试。
由于九度搜索点击软件完全模仿人的自然行为进行点击,所以软件工作时,占用一台电脑,在挂机的同时,不能干其他的事情。建议在闲暇时挂机,或有多余的电脑挂机,也可以在自己的电脑上,安装虚拟机,在虚拟机上运行...
由于九度搜索点击软件完全模仿人的自然行为进行点击,所以软件工作时,占用一台电脑,在挂机的同时,不能干其他的事情。建议在闲暇时挂机,或有多余的电脑挂机,也可以在自己的电脑上,安装虚拟机,在虚拟机上运行...
九度 ACM 很好的九度 ACM解题报告 不错 大家可以下下来看看 九度内推
九度OJ部分题目解题代码,可以供考研学生参考
王道关于考研机试的指导书,原来可以配合练习的九度oj已关闭,但这本书依然可以给准备机试的道友们很大帮助
资源分享者,资源爱好者,我是浪杉,点我资料关注,每日不定时分享全网优质源码!
ZJU考研机试真题 九度1006ZOJ问题
九度智能SEO优化软件是九度搜索引擎点击优化软件重新开发版,本是针对搜索引擎的SEO优化类软件,2016年10月正式上线。软件可像真人点击一样,自动点击百度、谷歌、360搜索、搜狗、搜搜、淘宝、天猫等搜索引擎内的...