Вспомним игру: "Придумай слово", в которой из букв слова-донора составляют другие слова. Например, из слова МОНИТОР можно получить МОТОР, РОТ, ТИР и др. Вхождение каждой буквы в новое слово допускается не более того числа раз, с каким она входит в слово-донор.
Пусть дана последовательность слов, разделенных пробелами в виде строки символов. Известно, что первое слово в этой строке является донором. Выбрать из оставшихся слов последовательности те, которые можно получить из заданного слова-донора.

1

Ответы и объяснения

2013-11-21T18:17:06+04:00
Prime := { Получаем первое слово из последовательности }
while { не конец последовательности (не известно от куда аффтар получает слова ) } do 
  begin 
    Slovo := { Получаем очередное слово последовательности }
    if Length(Slovo) <= Length(Prime) then 
      begin 
        CopyPrime := Prime; 
        N := 1; 
        while (N <= Length(Slovo)) and (Pos(Slovo[N], CopyPrime) > 0 do 
          begin 
            Delete(CopyPrime, Pos(Slovo[N], CopyPrime), 1); 
            Inc(N); 
          end; 
        if N > Length(Slovo) then 
          { Slovo можно получить из первого слова } 
        else 
          { нельзя получить Slovo из первого слова } 
      end; 
  end;