说实话,很不明白这个题目非常的奇怪,用kmp的耗时比暴搜都长。。。。。
全当锻炼kmp了~~~~
[html]
#include
#include
#include
#include
using namespace std;
int str[1000005];
int p[10005];
int n1,n2;
int next[10005];
void chu()
{
int i,j;
i=0,j=-1;
next[i]=j;
while(i
if(j==-1||p[i]==p[j])
{
i++;
j++;
if(p[i]==p[j])next[i]=next[j];
else next[i]=j;
}
else j=next[j];
}
}
void pipei()
{
int i,j;
i=0,j=0;
while(i
if(j==-1||p[j]==str[i])
{
j++;
i++;
}
else
{
j=next[j];
}
}
if(j
int main()
{
int T,i;
cin>>T;
while(T--)
{
cin>>n1>>n2;
for(i=0;i
scanf("%d",&str[i]);
}
for(i=0;i
scanf("%d",&p[i]);
}
chu();
pipei();
}
return 0;
}
#include
#include
#include
#include
using namespace std;
int str[1000005];
int p[10005];
int n1,n2;
int next[10005];
void chu()
{
int i,j;
i=0,j=-1;
next[i]=j;
while(i
if(j==-1||p[i]==p[j])
{
i++;
j++;
if(p[i]==p[j])next[i]=next[j];
else next[i]=j;
}
else j=next[j];
}
}
void pipei()
{
int i,j;
i=0,j=0;
while(i
if(j==-1||p[j]==str[i])
{
j++;
i++;
}
else
{
j=next[j];
}
}
if(j
int main()
{
int T,i;
cin>>T;
while(T--)
{
cin>>n1>>n2;
for(i=0;i
scanf("%d",&str[i]);
}
for(i=0;i
scanf("%d",&p[i]);
}
chu();
pipei();
}
return 0;
}