Проверка вложенности последовательностей


Задачка, которая иногда встречается при обработке массивов. Нужно
определить входит ли одна последовательность в другую. Похоже на
определение вложенности множеств, но в данном случае порядок элементов
в последовательности имеет значение.

// Artix, 2011-01-13

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const int X=20;
const int Y=3;

int seq1[X];
int seq2[Y];


int main()
{
    srand(time(NULL));
    
    // Sequence 1
    for(int i=0;i<X;i++)
    {
        seq1[i] = rand() % 10;
        printf("%d ",seq1[i]);
    }
    printf("\n");
    
    // Sequence 2
    for(int i=0; i<Y; i++)
    {
        seq2[i] = rand() % 10;
        printf("%d ",seq2[i]);
    }
    printf("\n");
    
    // Search seq2 in seq1
    int x=X, y=Y;
    while(x>0 && y>0)
    {
        if (seq1[x-1]==seq2[y-1])
        {
            x--; y--;
        }
        else
        {
            x--;
        }
    }
    int result = (y==0);
    printf("Result: %s\n",result?"YES":"NO");
    return 1;
}