Цитата:
Сообщение от 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 и т.д.