팰린드롬만들기 문제 도와주세요 shinhj88 [[problem:PALNDROMIZE]] 이코드가 시간초가가나는 왜 나는지 도무지 이해가 가지 않습니다. KMP알고리즘을 그대로 이용하여 풀었는데... #include <cstdio> #include <cstring> #include <vector> using namespace std; const int MAX_S = 100001; char S[MAX_S],P[MAX_S]; int N; vector<int> faildfun() { vector<int> pi(N); int k=-1; for(int i=1;i<N;i++) { while(k!=-1&&P[i]!=P[k+1])k=pi[k]; if(P[i]==P[k+1])k++; pi[i]=k; } return pi; } int KMP() { vector<int> pi=faildfun(); int j=-1; for(int i=0;i<N;i++) { while(j!=-1&&P[j+1]!=S[i])j=pi[j]; if(P[j+1]==S[i])j++; } return N-j-1; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%s",S); N=strlen(S); for(int i = N-1; i >= 0; i--)P[N-i-1]=S[i]; printf("%d\n",N+KMP()); } return 0; } 11년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
shinhj88
[[problem:PALNDROMIZE]]
이코드가 시간초가가나는 왜 나는지 도무지 이해가 가지 않습니다. KMP알고리즘을 그대로 이용하여 풀었는데...
11년 전