博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——1277,全文搜索(搜索)
阅读量:4050 次
发布时间:2019-05-25

本文共 666 字,大约阅读时间需要 2 分钟。

突破口:

原本思路是将每个key的首个数字去与全文进行暴力匹配,如果匹配到数字相同了,再进行key后面的数字的匹配,但这样超时了。不过这种想法还是可取的,
我们可以事先将0-9这10个数字出现的所有位置记录下来,则假如key的首数字为7,就可以直接找到7的位置,进行key后面数字的匹配,而不用从前往后遍历,去找数字7。这样可以省很多时间。

代码如下:

#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int maxn=1e5+5;char s[maxn],s0[maxn],s1[105],s1_[105],s1__[105],s2[105];struct number{ int cnt; int places[60005];}p[10]; //记录10个数字出现的位置struct key { int place; int numb;}num[10005]; //如果匹配到了key,则记录它首次出现的位置,以及它的编号bool cmp(key x,key y) //应题目要求,要依次输出先出现的key{ return x.place
temp2+len) //匹配到了 { flag=1; break; } }//cout<<"flag"<<' '<
<

转载地址:http://pddci.baihongyu.com/

你可能感兴趣的文章
WinCE 对 Java脚本的支持
查看>>
XML学习
查看>>
ASP中LIST控件
查看>>
ASP中按钮触发事件
查看>>
学习:GPIO口模拟I2C
查看>>
展望2007
查看>>
做个男人
查看>>
转:S3C2410 bootloader ----VIVI阅读笔记
查看>>
转:嵌入式系统 Boot Loader 技术内幕
查看>>
ARM 的宏定义
查看>>
SIGN UP BEC2
查看>>
S3C2440中对LED驱动电路的理解
查看>>
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
关于货币符号以及发音、币别码
查看>>
关于预处理器的学习
查看>>
ARM,S3C2410中脉宽调制定时器
查看>>
Zebra Bar-One 不能批量打印离散号码
查看>>
Platform创建WinCE内核时的编译错误
查看>>
玻璃杯
查看>>