不知道為啥,最近根本就a不了題,也不知道哪錯了......orz~
time limit: 1000 ms memory limit: 65536 kib
submit
statistic
discuss
problem description
曾經,zyj同學非常喜歡密碼學。有一天,他發現了乙個很長很長的字串s1。他很好奇那代表著什麼,於是神奇的wl給了他另乙個字串s2。但是很不幸的是,wl忘記跟他說是什麼意思了。這個時候,zyj不得不求助與偉大的zp。zp笑了笑說,這個很神奇的,wl的意思是只要你找到她給你的字串在那個神奇的字串的位置,你就會有神奇的發現。zyj恍然大悟,原來如此,但是悲劇來了,他竟然不知道怎麼找。。。。是的,很囧是不是。所以這時候就需要化身為超級瑪麗亞的你現身了,告訴他吧。。。。。。
input
首先輸入乙個n。表示有n組測試資料。
每組測試資料有兩行。
第一行為字串s1,長度不大於1000000。
第二行為字串s2,長度不大於10000,並且長度不小於2。
output
輸出s2在s1的位置。如果有多個位置,只輸出第乙個位置。
如果找不到,就輸出「::>_<::「(不輸出雙引號)。
sample input
1
asdfgdf
df
sample output
3
這是ac的:
#include#includechar str1[1000010], str2[1000010];
int next[1000010];
void get_next(char s)
if(s[i] == s[j])
else
}}int kmp(char str1, char str2)
else
else}}
if(j >= strlen(str2)) return i - strlen(str2) + 1;
else return -1;
}int main()
return 0;
}
這是我不知道錯在**的.....
wa:
#include#includechar s1[1000050], s2[10010];
int next[1000050];
void get_nex(char s)
if(s[i] == s[j])
else
}}void kmp(char s1,char s2)
else
}// printf("%s\n%s\n",s1,s2);
if(j >= len2)printf("%d\n",i - j + 1);
else printf("::>_<::\n");
}int main()
return 0;
}
學密碼學一定得學程式 (KMP)
曾經,zyj同學非常喜歡密碼學。有一天,他發現了乙個很長很長的字串s1。他很好奇那代表著什麼,於是神奇的wl給了他另乙個字串s2。但是很不幸的是,wl忘記跟他說是什麼意思了。這個時候,zyj不得不求助與偉大的zp。zp笑了笑說,這個很神奇的,wl的意思是只要你找到她給你的字串在那個神奇的字串的位置,...
學密碼學一定得學程式
time limit 1000ms memory limit 65536k 曾經,zyj同學非常喜歡密碼學。有一天,他發現了乙個很長很長的字串s1。他很好奇那代表著什麼,於是神奇的wl給了他另乙個字串s2。但是很不幸的是,wl忘記跟他說是什麼意思了。這個時候,zyj不得不求助與偉大的zp。zp笑了笑...
學密碼學一定得學程式
曾經,zyj同學非常喜歡密碼學。有一天,他發現了乙個很長很長的字串s1。他很好奇那代表著什麼,於是神奇的wl給了他另乙個字串s2。但是很不幸的是,wl忘記跟他說是什麼意思了。這個時候,zyj不得不求助與偉大的zp。zp笑了笑說,這個很神奇的,wl的意思是只要你找到她給你的字串在那個神奇的字串的位置,...