����� �� �����.


������ ���������.

����� � �������, ��������, �������������������:
������ ����� ��������� � ������.


������� �����

������� � ����������� - ������ �.

     ���� ������� �������, ������������ � ��������� ������ - ����, �� ����� ���������� ��� ���������� ��������, ��, ����� ������ �������� ������� �� ��������� � ������ �������, ��� ��� ����� ����� ����� � �������� ASCII � ��� ������� ������ � ��������� ���������, �� ���������� ����������� �������. ������������� � ��������� ������ ��� ������ ����� ���� ������ �����������.

     ���� ������� ���������� xy [ i , i + m - 1 ], ����� ������ - �� ����� 1. ����� �������, ������ y [ i + m ] ����������� ����� �������� � ��������� �������, � ������, ����� ���� ����������� � ������� ������� ��� ������ ������� �������. ������������ ������� ������� �������, ����� ������� � ������ ��������� ������ :

bc[ a ] = min { j | 0 <= j <= mx[ m - 1 - j ] = a }, ���� a ����������� � x,

bc[ a ] = m � ��������������� ������.

     �������� ������ � ������� ����� ������������� � ����� �������. �������� �� ������������� ������ ������, �������� ������������� ���������� ��������� �� ��������.

���������� �� ��

void QS( char *y, char *x, int n, int m)
{
 int i, qs_bc[ ASIZE ];
 
 /* Preprocessing */
 for ( i = 0; i < ASIZE; i++ ) qs_bc[ i ] = m + 1;
 for ( i = 0; i < m; i ++ ) qs_bc[ x[ i ] ] = m - 1;
 
 /* Searching */
 i = 0; 
 while ( i <= n - m ) {
    if ( memcmp( &y[ i ], x, m ) == 0 ) OUTPUT( i );
   i += qs_bc[ y[ i + m ] ];             /* shift */
 }
}
   


����� � ������ ���������

����� �� ��������, � ������ ����������.
������



���������� �������� �������� ������ ����
�������� ������-���� �������� ��������
�������� �����-������ �������� �����-�������-������
�������� �������-������ �� ����� �� ������� ��������
�������� ������-���

SpyLOG