SDUT 2463 学密码学一定得学程序
来源:互联网 发布:算法导论 附加部分答案 编辑:程序博客网 时间:2024/05/29 08:37
学密码学一定得学程序
Time Limit: 1000MSMemory Limit: 65536KB
SubmitStatistic Discuss
Problem Description
曾经,ZYJ同学非常喜欢密码学。有一天,他发现了一个很长很长的字符串S1。他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2。但是很不幸的是,WL忘记跟他说是什么意思了。这个时候,ZYJ不得不求助与伟大的ZP。ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现。ZYJ恍然大悟,原来如此,但是悲剧来了,他竟然不知道怎么找。。。。是的,很囧是不是。所以这时候就需要化身为超级玛丽亚的你现身了,告诉他吧。。。。。。
Input
首先输入一个n。表示有n组测试数据。
每组测试数据有两行。
第一行为字符串S1,长度不大于1000000。
第二行为字符串S2,长度不大于10000,并且长度不小于2。
Output
输出S2在S1的位置。如果有多个位置,只输出第一个位置。
如果找不到,就输出“::>_<::“(不输出双引号)。
Example Input
1ASDFGDFDF
Example Output
3
Hint
KMP应用,万变不离其宗!!!
上模板代码!!!
#include<cstdio>#include<cstring>#define INF 1000005using namespace std;int next[1000005];void getnext(char *s,int *next){ int j,k; j=0;k=-1; next[0]=-1; int len=strlen(s); while(j<len-1) { if(k==-1||s[j]==s[k]) { j++;k++; next[j]=k; } else k=next[k]; }}int kmp(char *s1,char *s2){ int i=0,j=0; getnext(s2,next); int len1=strlen(s1); int len2=strlen(s2); while(i<len1&&j<len2) { if(j==-1||s1[i]==s2[j]) { i++; j++; } else j=next[j];//i²»±ä£¬jºóÍË¡£ } if(j>=len2) return (i-len2+1); else return -1;}int main(){ char str1[INF],str2[INF]; int t; scanf("%d",&t); while(t--) { scanf("%s %s",str1,str2); int num=kmp(str1,str2); if(num!=-1) printf("%d\n",num); else printf("::>_<::\n"); } return 0;}
阅读全文
0 0
- [2463]学密码学一定得学程序 (KMP)SDUT
- SDUT OJ 2463 学密码学一定得学程序
- 学密码学一定得学程序 SDUT 2463
- SDUT 2463 学密码学一定得学程序
- SDUT 2463 学密码学一定得学程序
- 2463-学密码学一定得学程序
- sdut oj2463 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序 KMP
- 学密码学一定得学程序(SDUTOJ_2463)
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 学密码学一定得学程序
- 如何提取html文本中的图片地址
- 分享一下老型号macbook pro在win10下安装BootCamp6.0驱动的方法
- 深度学习几种优化器的比较
- 03-树3 Tree Traversals Again(25 分)
- 10-11面经
- SDUT 2463 学密码学一定得学程序
- QT初次
- Restful Api写法心得之一《路径定义篇》
- placeholder属性 点击文本框,输入值默认提示内容消失
- BZOJ3312 不找零(状压DP)
- laravel DB 执行 mysql函数或者字段
- 【矩阵快速幂+矩阵运算性质】Fast Matrix Calculation HDU
- SuperMarketSys超市管理系统(model2版本)
- centos服务器上mysql5.7.19数据库安装