POJ 2001 사전 나무 누 드 문제
1715 단어 사전 트 리
단어 마다 접 두 사 를 가장 짧게 반복 하지 않 기 를 바 랍 니 다.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll int
using namespace std;
inline ll Min(ll a,ll b){return a>b?b:a;}
inline ll Max(ll a,ll b){return a>b?a:b;}
#define Word_Len 10000
#define Sigma_size 30
int ch[Word_Len][Sigma_size]; //Word_Len Sigma_size=26
int Have_word[Word_Len]; //
int val[Word_Len]; // , 0 , !=0
int sz ; //
//
void init(){
sz = 1;
memset(ch[0], 0, sizeof(ch[0]));
memset(val, 0, sizeof(val));
memset(Have_word, 0, sizeof(Have_word));
}//
int idx(char c){ return c-'a';} //
void Creat(char *s){
int u = 0, len = strlen(s);
for(int i = 0; i < len; i++){
int c = idx(s[i]);
if(!ch[u][c]){ //
memset(ch[sz], 0, sizeof(ch[sz]));
ch[u][c] = sz++;
}
u = ch[u][c];
Have_word[u]++;
}
}
void find_ans(char *s){
int u = 0, len = strlen(s);
for(int i = 0; i < len; i++){
int c = idx(s[i]);
u = ch[u][c];
printf("%c",s[i]);
if(Have_word[u]==1) return ;
}
}
char S[1002][25];
int n;
int main(){
n=0;
init();
while(~scanf("%s",S[n])){
Creat(S[n]);
n++;
}
for(int i=0;i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
poj2630Phone List (정적 트 라이 트 리)이 문 제 는 항 저 우 전기 1671 과 마찬가지 로 - > 자세 한 내용 은 여 기 를 찌 르 세 요 < - 그래서 1671 의 코드 로 한 통 을 제출 했 는데 결국 TLE 가 되 었 습 니 다.과감하게 정적 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.