Как написать эффективный алгоритм для поиска массива подмножества целых чисел в другом массиве в C? Например:Поиск подстроки 'в другой' строке
unsigned a[] = {42, 72, 61, 1023, 84, 42, 42, 193, 302, 72};
unsigned long al = 10;
unsigned b[] = {61, 1023, 84};
unsigned long bl = 3;
Я попытался грубой силы подход, с помощью цикла через a
, а затем циклически b
если a[n]
является b[0]
, но затем отступает, если совпадение не на полпути. Мне кажется, что я лучше всего думаю, но я уверен, что должен быть более быстрый способ.
Вместо того, чтобы жестко кодировать размер, вы можете использовать 'sizeof (a)/sizeof (a [0])'. –
Спасибо за отзыв, хотя это пример, и в моей программе у меня есть 'struct', который управляет динамической памятью плюс длина указателя. –
Я всегда думал, что C не знает размер массива. Это определенно не может определить длину массива. Какая разница? – AlcubierreDrive