Информатика и технология программирования


Линейный кроссворд - часть 3



{ // цепочку из нового слова,


cout &#60&#60 pw &#60&#60 "\n";
return 1; // удача - вывести слово и выйти


}
}
w[n]=pw; // возвратить исключенное слово


}
return 0;
}

Чисто технические детали : функция TEST проверяет, не совпадает ли окончание первой строки с началом второй путем обычного сравнения строк при заданной длине " хвоста" первой строки.


int TEST(char *s, char *r)
{ int n,k;
n=strlen(s);
if (n==0) return 1;
for (;*s!=0 &#38&#38 n&#62 1; s++,n--)
if (strncmp(s,r,n)==0) return 1;
return 0; }

Другая техническая проблема - удобство первоначального запуска рекурсии. Функция TEST при первом параметре - пустой строке возвращает ИСТИНУ при любом виде второй строки. Этого достаточно, чтобы запустить первый шаг рекурсии. При наличии пустой строки в качестве параметра функции step на первом шаге рекурсии будет производиться безусловная проверка каждого слова на предмет создания цепочки.


void main() { step(""); }




Начало  Назад  Вперед



Книжный магазин