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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 22:24   #11
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию

А проще никак нельзя??? Слишком все запутано.
Helen236 вне форума Ответить с цитированием
Старый 09.04.2012, 22:44   #12
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию

А можно как-нибудь попроще, а то все так запутано!
Helen236 вне форума Ответить с цитированием
Старый 10.04.2012, 04:25   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Helen236 Посмотреть сообщение
А можно как-нибудь попроще, а то все так запутано!
Согласен, запутано..
Думаю, можно проще. Держи.
Извиняюсь перед вышевыступавшими - не стал влезать в их код, накарябал свой.. Вроде пашет. Особенно не проверял, погоняй..
Код:
procedure Permute(t,s: string);
var
  i: integer;
begin
  if s='' then
    writeln(t)
  else
    for i:=1 to Length(s) do
      if Pos(s[i],s)=i then
        Permute(t+s[i],Copy(s,1,i-1)+Copy(s,i+1,Length(s)-i))
end;

begin
  Permute('','212')
end.
Объяснить что-то, или и так все ясно? ))
Успехов тебе, Леночка236 ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 10.04.2012, 07:50   #14
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Согласен, запутано..
Думаю, можно проще. Держи.
Извиняюсь перед вышевыступавшими - не стал влезать в их код, накарябал свой.. Вроде пашет. Особенно не проверял, погоняй..
Код:
procedure Permute(t,s: string);
var
  i: integer;
begin
  if s='' then
    writeln(t)
  else
    for i:=1 to Length(s) do
      if Pos(s[i],s)=i then
        Permute(t+s[i],Copy(s,1,i-1)+Copy(s,i+1,Length(s)-i))
end;



begin
  Permute('','212')
end.
Объяснить что-то, или и так все ясно? ))
Успехов тебе, Леночка236 ))
интересно. так просто )))
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 10.04.2012, 08:53   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

TinMan, извините меня за прямоту, но это же ГЕНИАЛЬНО!
Это просто взрыв мозга. я три дня мучался, пытался что-то такое придумать (чувствовал, что должно быть решение без накопления всех результатов и проверки, была ли такая комбинация раньше), и вот он! Вот он! Код моей мечты! Краткий! Кратчайший!!!!
PERFECT!

p.s.
Цитата:
Сообщение от TinMan
Объяснить что-то, или и так все ясно? ))
Не знаю, как Леночке, но лично мне в чём трюк (почему повторы не попадают) пока ещё не ясно! Буду пошагово разбирать код!

p.p.s. и спасибо за доставленное удовольствие! Автор, "пиши есчё"!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.04.2012, 09:11   #16
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Сиб, мужики! ))
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в чём трюк (почему повторы не попадают)
пока ещё не ясно! Буду пошагово разбирать код!
Дело в строке
if Pos(s[i],s)=i then
Если ее убрать - будут повторы. Она отсекает перестановки повторных вхождений символов.
А сначала я сделал с множествами. Код был чуть длиннее, но работал бы он быстрее, думаю. Функция pos, конечно, не есть хорошо с точки зрения производительности..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 10.04.2012, 10:31   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Дело в строке
if Pos(s[i],s)=i then
Если ее убрать - будут повторы. Она отсекает перестановки повторных вхождений символов.
спасибо за объяснение.
то, что дело в этой строке, я уже понял, и даже как работает - вроде бы понял!
Но самостоятельно сообразить не смог бы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.04.2012, 20:08   #18
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию

Так а как же быть с буквами????
AB - AB,BA
Helen236 вне форума Ответить с цитированием
Старый 10.04.2012, 20:13   #19
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Helen236, запустите и посмотрите
Отлично и буквы обрабатываются.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.04.2012, 20:46   #20
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Helen236, запустите и посмотрите
Отлично и буквы обрабатываются.
Только если 212 заменить на AB. Или я что-то не понимаю
Helen236 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестановки SVing Паскаль, Turbo Pascal, PascalABC.NET 26 27.02.2012 22:01
C# Перестановки pro100saniok Помощь студентам 5 21.12.2010 00:12
перестановки символов mrkheggy Помощь студентам 7 12.12.2010 23:39
перестановки fedd Помощь студентам 2 27.11.2009 22:59
Перестановки H'orn Общие вопросы .NET 4 11.11.2009 03:08