| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这道题很水,可我还是有点不明白Source Code
Problem: 2406 User: wb_jerry
Memory: N/A Time: N/A
Language: G++ Result: Wrong Answer
Source Code
#include <iostream>
#include <cstring>
using namespace std;
#include <stdio.h>
const int len=1000010;
string ifexit=".";
int p[len+1];
char s[len+1];
int main()
{
while(scanf("%s",&s))
{
if(s==ifexit) break;
int i,k,m=strlen(s);
p[1]=0;
k=0;
for(i=2;i<=m;i++)
{
while(k>0&&s[k]!=s[i-1])
k=p[k];
if(s[k]==s[i-1])
k=k+1;
p[i]=k;
}
**********************************************************************
k=m;
i=1;
while(p[k]!=0&&(3*p[k]>=2*k||2*p[k]==k))
{
k=p[k];
i++;
}
cout<<i<<endl;
**********************************************************************
}
return 0;
}
我测试的数据都没什么问题啊,改成len/(len-next[len])后就AC了,是哪里没考虑到么?
那位同学能帮我看下两条线中间的部分有什么问题么
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator