Показать сообщение отдельно
Старый 18.11.2012, 18:42   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Black_Betty Посмотреть сообщение
Простите, я тут туплю немного (или много), но вот в этой части я вообще не понимаю как идёт подсчет
For i:=1 to Nw do
If Length(W[i])<Nsymb then b1:=true;
If Not(b1) then
For i:=1 to Nw-1 do
For j:=i+1 to Nw do
If W[i][Nsymb]=W[j][Nsymb] then b:=false;
Ну, что касается первой части (2 строки), то тут всё просто: перебираются слова массива, и если оказывается, что длина какого-то из них меньше текущего номера, то b1 перебрасывается и дальше выводится сообщение, что решения нет. В приведенном мною примере это произойдет при Nsymb=5 для первого слова.
Дальше немного сложнее. Пусть текущий номер, например, Nsymb=3. Наша задача - сопоставить символы, стоящие на третьей позиции, для всех слов, и только если они все окажутся различными, то 3 будет ответом на задачу. Пусть, для примера, массив содержит 5 слов. Тогда третий символ первого слова сопоставляем с третьими символами второго, третьего, четвертого и пятого, затем третий символ второго слова сопоставляем с третьими символами третьего, четвертого и пятого слов (с первым словом уже не надо), затем третий символ третьего слова - с третьими символами четвертого и пятого, и, наконец, третий символ четвертого с третьим символом пятого. И если обнаружим хоть одно совпадение, то переходим к Nsymb=4, потом к Nsymb=5 и т.д.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070