현재 위치 - 대출자문플랫폼 - 초보자질문 - 항공 전자 1075 의 사전 트리 문제

항공 전자 1075 의 사전 트리 문제

# include & ltiostream & gt

# include & lt 문자열>

네임스페이스 STD 사용

Constintmaxn =1000000;

Stringtrans [maxn];

Int len

Typedef 구조 사전 노드 {

Structdic treenode * node [26];

Int 키

} * Dictree

그물 뿌리

Void insert_word (문자열 str)

{

Dictree current, newnode

현재 = 루트

For(int I = 0;; 나 & ltstr.length (); I++){

If (현재-"; 노드 [str [I]-'a'! = 0){

현재 = 현재-> 노드 [str [I]-[a];

}

그렇지 않으면 {

New node = (dictree) malloc (sizeof (dictreenode));

For(int j = 0;; J & lt26; J++) new node-> 노드 [j] = 0;

현재-> Node [str [I]-[a'] = new node;

현재 = 새 노드

현재-> 키 =-1;

}

}

현재-> 키 = len-1;

}

Intfind _ word (문자열)

{

네트 트리 전류

현재 = 루트

For(int I = 0;; 나 & ltstr.length (); I++){

If (현재-"; 노드 [str [I]-'a'! = 0)

현재 = 현재-> 노드 [str [I]-[a];

Else 는-1;

}

반환 전류-> 관건

}

Int main ()

{

문자열 tmp, temp

Root = (dictree) malloc (sizeof (dictreenode));

For(int I = 0;; 나 & lt26; I++) 루트-"; 노드 [I] = 0;

루트-> 키 =-1;

Len = 0;;

CIN>;; & gttmp

If (tmp = = "시작") {}

동시에 (CIN>;; & gttmp ){

If (tmp = = "end") break;

그렇지 않으면 {

Trans [len] = tmp;

Le n++;

CIN>;; & gttmp

_ 단어 (tmp) 를 삽입합니다.

}

}

게블린 (CIN, tmp); //마무리 완료 후 줄 바꿈

While (게블린 (CIN, tmp))

Temp = ""; //초기화 온도

If (tmp = = "시작") 계속;

Elseif (tmp = = "end") break;

그렇지 않으면 {

For(int I = 0;; 나< = tmp.length (); I++){

(I & lttmp.length () & 인 경우 & amptmp [I] =' a' amp; & amptmp [I] < =' z') temp.append (1,tmp [I]);

그렇지 않으면 {

만약 (! Temp.empty ())

Intans = find _ word (temp);

If(ans & gt;; -1) cout & lt & lttrans [ans];

Else cout & lt& lttemp

Temp.clear ();

}

(I & lttmp.length ()) cout < & lt tmp [I];

}

If (I = = tmp.length ()) cout < & ltendl

}

}

}

//system ("pause");

0 을 반환합니다

}

copyright 2024대출자문플랫폼