рдЦреЗрд▓ рдореЗрдВ рддреНрд╡рд░рд┐рдд рд╢рдмреНрдж рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

рдХрд┐рд╕реА рддрд░рд╣, рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ, рдореИрдВ рдЧреИрд░-рдорд╛рдирдХ рдирд┐рдпрдореЛрдВ (рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдиреЛрдбреНрд╕) рдХреЗ рд╕рд╛рде рдмреБрд▓рдбреЛрдЬрд░ рдХреЗ рдПрдХ рдЦреЗрд▓ рдореЗрдВ рдЖрдпрд╛ рдерд╛ред рдЪрдпрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдФрд░ 5x5 рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЪрдпрди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдПрдХ рдЦреЗрд▓ рдХрд╛ рд╢реМрдХ рдорд┐рд▓рд╛, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рдорд╛рдирдХ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ред рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдЪрдпрди рд▓рд┐рдЦреЗрдВ, рдмрд▓реНрдХрд┐ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╢рдмреНрдж рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред


рдЧреИрд░-рдорд╛рдирдХ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк "рдиреЛрдбреНрдпреВрд▓" рдореЛрдб рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдХ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 2 рдмрд╛рд░ рддрдХ рдПрдХ рд╢рдмреНрдж рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдЖрдк SHALASH, рдЕрдХреНрд╖рд░ W рдФрд░ A рд╢рдмреНрдж рдХреЛ 2 рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛, рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреЛрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рд╢рд╛рд╕реНрддреНрд░реАрдп рдореЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 1.5 рдЧреБрдирд╛ рд▓рдВрдмреЗ рдиреЛрдбреНрдпреВрд▓ рдореЛрдб рдореЗрдВ рдЦреЛрдЬрддрд╛ рд╣реИ (рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрджреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдФрд░ рдкрд╛рдП рдЧрдП рд╢рдмреНрдж рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣реИрдВ)ред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдиреЛрдбреНрдпреВрд▓ рдореЛрдб рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╢рдмреНрджрдХреЛрд╢


рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЬреАрд╡рди рдХреЛ рдФрд░ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рдЧрднрдЧ 110,000 рд╢рдмреНрдж рд╣реИрдВред
рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдИ рдЬрд╛рддреА рд╣реИред рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХрд╛ рдЕрд░реНрде рд╣реИ рд╢рдмреНрдж рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдХреНрд╖рд░ рдФрд░ 32 рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡рд░реНрдгрдорд╛рд▓рд╛ рдореЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ)ред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЯреНрд░реА рдиреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
typedef TREE *NEXT; //    struct TREE { NEXT *next; //       char *str; //      char *wrd; //  NULL,      }; 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рднреА рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕ рдиреЛрдб рд╕реЗ рдирд┐рдХрд▓рддреА рд╣реИ, next[] рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкрддреНрд░ рдХреЗ рд▓рд┐рдП next[] рдиреЛрдбреНрд╕ рдХреЗ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдб рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП str рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ind() рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, strchr(): рдЖрдзрд╛рд░ рдкрд░ strchr():
 int k=ind('',str); //  ()  ''   str 

рдпрджрд┐ k<0 , рддреЛ рдпрд╣ рдЕрдХреНрд╖рд░ str рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ next[k] рдЗрд╕ рдкрддреНрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдиреЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ "" рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рддреЛ рдЗрд╕ рдиреЛрдб рд╕реЗ рдареАрдХ 5 рдЙрдкрдкреНрд░рдХрд╛рд░ рдЖрддреЗ рд╣реИрдВ, рдФрд░ next[2] рдЕрдХреНрд╖рд░ '' рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ str[2]== '' , рдЕрдиреНрдп рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╢рдмреНрджрдХреЛрд╢ рдкрд░ рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢рдмреНрдж рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
 , , , ,  


рдпрджрд┐ str==NULL рдлрд╝реАрд▓реНрдб, рддреЛ рдпрд╣ рдиреЛрдб рдПрдХ рдкрддреНрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдбрд┐рдХреНрд╢рдирд░реА рд╢рдмреНрдж wrd ред '' рдЕрдХреНрд╖рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдиреЛрдб рдореЗрдВ "" рд╢рдмреНрдж рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд╢реАрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ - рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдФрд░ рд╢рдмреНрдж рд╣реИред wrd рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдпрджрд┐ рд╣рдо рд░реВрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдб рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрд┐рдХреНрд╢рдирд░реА рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ, рддреЛ wrd рдореЗрдВ NULL рд╣реЛрддрд╛ NULL ред
рд╣рдо рдЗрд╕ рдкреЗрдбрд╝ рдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рднреА рд╢рдмреНрдж рд╣реИрдВред рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рдПрдХ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╡ рдЙрд▓реНрдЯреЗ рд╢рдмреНрдж рдЙрдкрд╕рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЪрд▓реЛ рдЗрд╕ рдкреЗрдбрд╝ рдХреЛ рдФрдВрдзрд╛ рдХрд╣рддреЗ рд╣реИрдВ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "" рд╢рдмреНрдж рдХреЗ "" рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдЙрд▓реНрдЯреЗ рдкреЗрдбрд╝ рдкрд░ "", "", "", "", "" : "", "", "", "", "" ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рдВрдЪ рд╢рдмреНрджреЛрдВ рд╡рд╛рд▓реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдкреЗрдбрд╝ рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рджреВрдВрдЧрд╛:

рд╢рдмреНрдж рдЗрд╕ рдкреЗрдбрд╝ рдореЗрдВ рд╢рдмреНрджрд╛рд╡рд▓реА рд╢рдмреНрджреЛрдВ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рдкрд╕ рд╕рд╛рдордиреЗ рд╕реНрдерд┐рдд рд╣реИрдВред рд▓рд╛рд▓ рдШреЗрд░реЗ рдореЗрдВ рдиреЛрдб рд╢рдмреНрдж рд╢рдмреНрдж рдХреЗ рдЙрд▓реНрдЯреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдЕрдХреНрд╖рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╢рдмреНрдж рдХреЗ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╢рдмреНрдж рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд╛рд▓ рдиреЛрдб рд╕реЗ рд░реВрдЯ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд▓рдЯреЗ рдкреЗрдбрд╝ рдФрд░ рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЭрдВрдбреЗ рдПрдХ рдзреНрд╡рдЬ ( NULL/ NULL ) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдпрд╣ рдПрдХ рдЙрд▓реНрдЯреЗ рд╢рдмреНрдж рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди:


рдпрд╣ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рд▓рд╛рд▓ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП wrd!=NULL , рдмрд╛рдХреА wrd==NULL ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 root_inv->str == тАЭтАЭ; root_inv->next[0]->str == тАЭтАЭ; root_inv->next[5]->next[0]->wrd == NULL; //      root_inv->next[5]->next[0]->next[1]->wrd != NULL; //     


рджреЛрдиреЛрдВ рдкреЗрдбрд╝ рд╕реНрдореГрддрд┐ рдореЗрдВ 33M рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕реАрдзреЗ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рд╡реЗ i5 рдкрд░ рд▓рдЧрднрдЧ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреЗрдбрд╝реЛрдВ рдХреА рдЫрд╡рд┐ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрддрд┐ рдХреЗрд╡рд▓ 300 рдорд┐рд▓реА рд╕реЗрдХрдВрдб рдереАред

рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдЗрд╕ рдХрджрдо рдХреЗ рд▓рд┐рдП рдмреБрд▓рдбреЛрдЬрд░ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдПрдХ рдЦрд╛рд▓реА рд╕реЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╣рд╛рдВ рдХреЛрдИ рднреА рдкрддреНрд░ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
рд╣рд░ рдЬрдЧрд╣ рд╡реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕реЗрд▓ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕реЗрд▓ рдХреЗ рдирд┐рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкрддреНрд░ рдХреЛ рдЧреИрд░-рдЖрд╕рдиреНрди рд╕реЗрд▓ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╢рдмреНрдж рдХреА рд░рдЪрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдПрдХ-рдЕрдХреНрд╖рд░ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВред

рдлрд┐рд░ рдЖрдкрдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢рдмреНрдж рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдХреНрд╖рд░ рд╢рдмреНрдж рдореЗрдВ рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ рдирд╣реАрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдкреНрддрд╛рдиреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред рдпрджрд┐ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕реЗрдЯ рд▓реЗрдЯрд░ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╣рд▓реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдбрд┐рдХреНрд╢рдирд░реА рдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреЗрдбрд╝ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрдЯ рд▓реЗрдЯрд░ рд╕реЗ рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдШреВрдорддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рдкреНрд░рджрддреНрдд рдкрддреНрд░ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдиреЛрдб рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдЙрд▓реНрдЯрд╛ рдкреЗрдбрд╝ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рдкрд┐рдВрдЬрд░реЗ рд╕реЗ рдкрддреНрд░ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдореИрджрд╛рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЙрд▓реНрдЯреЗ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдореЗрдВ wrd!=NULL (рд▓рд╛рд▓ рдиреЛрдб) рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб wrd!=NULL , рддреЛ рдпрд╣ рдПрдХ рдорд╛рдиреНрдп рдЙрд▓реНрдЯрд╛ рд╢рдмреНрдж рдЙрдкрд╕рд░реНрдЧ рд╣реИред рдЙрдкрд╕рд░реНрдЧ рд╢рдмреНрдж рд╣реЛрдиреЗ рд╕реЗ, рдЖрдк рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдиреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдЕрдХреНрд╖рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдиреЛрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рдХрд╛ рд╢реЗрд╖ рдЯреБрдХрдбрд╝рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдореЗрдВ "рджрд╛рди" рдХрд░ рджреЗрдВред
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЙрди рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП рдереЗ, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдореЗрдВ count рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рд╣реИред рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдирдВрдмрд░ 2 (рдиреЛрдбреНрдпреВрд▓ рдореЛрдб рдХреЗ рд▓рд┐рдП) рдпрд╛ 1 (рдХреНрд▓рд╛рд╕рд┐рдХ рдореЛрдб рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореЛрдб рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рд╣реИред
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЪрдХреНрд░ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд░реНрддрдорд╛рди рдЖрд╕рдиреНрди рд╕реЗрд▓ рдХреЛ рдЬрд╛рджреВ рдХрд░рддреЗ рд╣реИрдВред
рдЦреЛрдЬ рд╕рдмрдЯреНрд░реА рд╕рд░реНрдЪ рдлрдВрдХреНрд╢рди рдкреНрд▓реЗрдЗрдВрдЧ рдлреАрд▓реНрдб, рдЯреНрд░реА рдиреЛрдб ( tree ) рдФрд░ рд╕реЗрд▓ рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯреНрд╕ (i, j) рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдХрд░ рдлрд░реНрд╢ рдХреЗ рд╕рд╛рде рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрдВрджреНрд░реАрдп рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ тАЭтАЭ (рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдмрд╛рдХреА рдЕрдХреНрд╖рд░ рдмрд╕ root_inv->str рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рдЬрд▓реНрджреА рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред рдкреНрд░рддреНрдпреЗрдХ рдкрддреНрд░ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ find ред рдЕрдХреНрд╖рд░ рдлрд╝рдВрдХреНрд╢рди рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд▓реНрдЯреЗ рдкреЗрдбрд╝ рдореЗрдВ -, - рдФрд░ - рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╡рд╣реА , , , -

рдЙрд▓реНрдЯреЗ рдкреЗрдбрд╝ рдХреЗ рдмрд╛рдХреА рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЙрдкрд╕рд░реНрдЧ рдорд┐рд▓реЗрдВрдЧреЗ:
тАУ , тАУ , тАУ , тАУ , тАУ ред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдиреЛрдб рдкрд╛рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЦрдВрдб 1. рдмреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП find рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рдЙрдкрд╕рд░реНрдЧ тАЬтАЭ root->next[0]->next[0]->next[0] рдиреЛрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:

рдЕрдЧрд▓рд╛ рдЖрд╕рдиреНрди рдкрддреНрд░ рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ , рд▓реЗрдХрд┐рди рдЗрд╕ рдиреЛрдб рдХреЗ str рдХреНрд╖реЗрддреНрд░ рдореЗрдВ тАЬтАЭ , рдЗрд╕рд▓рд┐рдП рд╣рдо рддреБрд░рдВрдд find рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ find , рдЕрд░реНрдерд╛рддред - рдФрд░ - рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдореЗрдВ рдХреЛрдИ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред тАЬтАЭ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд▓рд┐рдП тАЬтАЭ рд╢рдмреНрджрдХреЛрд╢ рдкреЗрдбрд╝ рдореЗрдВ рдХреЛрдИ рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ -, -, -, - , -, -, -, - , -, -, -, - , -, -, -, - рд╢реБрд░реВ -, -, -, - , рд╡рд╣реА тАЬтАЭ рдФрд░ тАЬтАЭ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред

рдЙрдкрд╕рд░реНрдЧ тАЬтАЭ root->next[0]->next[0]->next[2] рдиреЛрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдлрд╝реАрд▓реНрдб wrd!=NULL , рд╕реНрдЯреНрд░рд┐рдВрдЧ wrd () рдореЗрдВ рдкрд╛рдП рдЧрдП рд╢рдмреНрджреЛрдВ рдХреА рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ рдФрд░ рдЖрдЧреЗ рдЦреЛрдЬ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП find рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ find , рд▓реЗрдХрд┐рди рд▓рд╛рдЗрди рдкреЗрдбрд╝ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЗрд╕реЗ рдкрд╛рдпрд╛ рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред

рдкрд░рд┐рдгрд╛рдо


рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рд╢рдмреНрджрдХреЛрд╢ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 110,000 рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ):
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреЗрд▓рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЦреЗрд▓ рд╣реИред
рдпрд╣рд╛рдВ рдлрд╝реАрд▓реНрдб 99 , рдФрд░ рдпрд╣ рдЖрдзрд╛ рднрд░рд╛ рд╣реБрдЖ рд╣реИ (рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рднреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрддреНрд░реЛрдВ рдХреА рдЕрдЪреНрдЫреА рдЖрдкрд╕реА рд╡реНрдпрд╡рд╕реНрдерд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдХрдИ рд▓рдВрдмреЗ рд╢рдмреНрджреЛрдВ рдХреА рд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рдиреЛрдбреНрдпреВрд▓ рдореЛрдб рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рднреА рд╢рдмреНрдж рдкрд╛рддрд╛ рд╣реИ:


рдЕрдиреНрдп рдкрдВрдХреНрддрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рд╕рдордп рдФрд░ рднреА рдХрдо рд╣реИред

рдЖрд╡реЗрджрди


рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо iOS (рдРрдк рд╕реНрдЯреЛрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз) рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЦреЛрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:


рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛: рдЬреЛ рд╢рдмреНрдж рд▓рдВрдмрд╛рдИ рдореЗрдВ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдХреНрд╖рд░ рдХреА рджреБрд░реНрд▓рднрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╖рд░ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рд░ рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рд╛рднрдкреНрд░рдж рд╣реИ)ред

Source: https://habr.com/ru/post/In207734/


All Articles