Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2008, 05:50   #1
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
Лампочка Задача на большой перебор

Дана строка S и набор A слов А[1], ..., A[k]. Разбить строку S на слова набора всеми возможными способами.

Пример: S=ABBC

A[1]=A, A[2]=AB, A[3]=BC, A[4]=BBC, A[5]=H, A[6]=B

S = A B BC

= A BBC

= AB BC
Помогите кто чем может, а то мне за зачёт пара будет!
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Старый 06.04.2008, 09:35   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Из начала строки выделяем все возможные слова словаря.
Повторяем эту операцию для всех остатков строки.
Если строка выбрана полностью, печатаем текущее разбиение.

Код:
const ACount = 6;
const A : array [1..ACount] of String =
       ('A', 'AB', 'BC', 'BBC', 'H', 'B');

procedure Split(S:String; CSplit:String);
var i, j, L:integer;
    B:boolean;
    S1, S2:String;
begin
   for i:=1 to ACount do begin
      L := length(A[i]);
      if length(S) >= L then begin
         j := 1; B := true;
         While (j <= L) and B do begin
            if A[i][j] <> S[j] then B := false;
            inc(j);
         end;
         if B then begin
            if length(S) = L then begin
               writeLn(CSplit + ' ' + S)
            end else begin
               S1 := copy(S, 1, L);
               S2 := copy(S, L+1, length(S));
               Split(S2, CSplit+' '+S1);
            end;
         end;
      end;
   end;
end;


var S : String;
begin
   S := 'ABBC';
   Split(S, '');
end;
alexBlack вне форума Ответить с цитированием
Старый 06.04.2008, 18:15   #3
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
По умолчанию

Спасибо огромное Выручил.
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать перебор ??? akasex Общие вопросы Delphi 2 13.06.2008 09:27
Перебор элементов матрицы pikkk Общие вопросы Delphi 3 09.05.2008 14:45
перебор всех элементов в TtreeView vitalik007 Общие вопросы Delphi 10 09.04.2008 15:44
Перебор заглавных букв в слове =LeonZone= Общие вопросы Delphi 8 02.11.2007 14:59