使用滑动窗口的思想来获取最短摘要,可以达到O(N)的时间复杂度。

http://ac.jobdu.com/problem.php?pid=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;elsereturn false;
}int GetMinAbstract()          //取得最短摘要
{int i,start=0,end=len2-1;minlen=MAX;num=0;for(i=start;i<end;i++)   //初始化滑动窗口{if(s[i]=='*')num++;elsemovewindow[s[i]-'0']++;}while(start<=end && end<len1){if(s[end]=='*')num++;elsemovewindow[s[end]-'0']++;while(IsAllExisted()){if(end-start+1<minlen)minlen=end-start+1;if(s[start]=='*')num--;elsemovewindow[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");elseprintf("%d\n",n);}return 0;
}

如果使用二分搜索的思想可以达到O(N*lgN)的时间复杂度。

九度OJ最短摘要的生成相关推荐

  1. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  2. Freckles - 九度 OJ 1144

    Freckles - 九度 OJ 1144 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: In an episode of the Dick Van Dyke show, l ...

  3. 非常可乐(九度 OJ 1457)

    非常可乐(九度 OJ 1457) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 1.题目描述: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为.因为每次当 see ...

  4. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  5. 九度OJ——1028继续畅通工程

    题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修 ...

  6. Leagal or Not - 九度 OJ 1448

    Leagal or Not - 九度 OJ 1448 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: ACM-DIY is a large QQ group where man ...

  7. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  8. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  9. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

最新文章

  1. mysql 事务隔离规范_MySQL事务隔离级别以及脏读、幻读、不可重复读示例
  2. Java往事之《返回整数的长度》
  3. vue.js 使用axios实现下载功能
  4. 信息学奥赛一本通 1164:digit函数
  5. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  6. [Linux] 编译 与 链接
  7. 【leetcode】1090. Largest Values From Labels
  8. Strut2 annotation配置时action到另一个action跳转参数传递
  9. 网吧软件经典大集合.各种网管工具
  10. 基于51单片机机械臂控制系统
  11. 陈玉琴老师的中医理学
  12. 2019 live tex 发行版_TexLive 2019 安装指南
  13. C#:办公用品管理软件项目总结
  14. nltk 句子结构分析
  15. Linux运维养成记-磁盘管理LVM 逻辑卷
  16. 知识产权服务代理行业税收政策
  17. 人月神话之四 贯彻执行、为什么巴比伦塔会失败
  18. python paramiko ssh-解决强制修改密码登录问题
  19. 03-CGB-DB-INIT-V1.01
  20. Files and Directories

热门文章

  1. Alibaba Cloud Linux 技术图谱首发,分享学习感言得大奖!
  2. 工程狮爸爸如何准备儿童节礼物?
  3. 直击阿里新一代数据库技术:如何实现极致弹性能力?
  4. HTML提交弹出提交中,javascript – 从弹出窗口在父窗口中提交表单?
  5. 四级单词pdf_2016年12月大学英语四级真题及答案解析(完整三套可打印)
  6. nginx可以负载均衡多个tomcat,nginx主机挂了怎么办?Keepalived
  7. 手机游戏美术外包的四大优点及三大建议
  8. 《秦时明月世界》手游如何用Unity定制化渲染管线?
  9. 《鬼泣V》:旧时代的标杆在新时代的窘境
  10. mysql数据库1067错误