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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 10:40   #1
Элизабет
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 2
По умолчанию Обработка массива

По данному числу n вывести все перестановки множества {1,..,n}. Например, для числа 3 список перестановки следующий: (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1).

Помогите, пожалуйста.. Заранние благодарна..
Элизабет вне форума Ответить с цитированием
Старый 23.12.2011, 11:33   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

http://programmersforum.ru/showthrea...&posted=1#post
Для своей задачи поменяйте во втором операторе
Код:
k = 2
на
Код:
k = len( a )
(и про язык хорошо было бы хоть что-то сказать...)

Последний раз редактировалось Vago; 23.12.2011 в 11:37.
Vago вне форума Ответить с цитированием
Старый 23.12.2011, 11:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот решение на Pascal, когда исходные элементы представлены в виде строки.
Код:
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 48124,0,655360}
var S:string;
    LenS : byte absolute S;
    a1,a2 : string;

procedure ShowVariant(S0,S1 : string);
var I :byte;
begin
  if length(S1)=1 then begin WriteLn(S0+S1); Exit end;
  a1 := '';
  a2 :=  copy(S1,I+1,length(S1));
  for i:=1 to length(S1) do ShowVariant(S0+S1[i],copy(S1,1,I-1)+
                             copy(S1,I+1,length(S1)));
end;

begin
  Writeln('Переборщик строк     v1.0 by B_SA (Specailly for Nataly & Juliy)');
  if ParamCount < 1 then begin WriteLn('Укажите в командной строке требуемую строчку.');
      Writeln('Для выдачи результатов в файл введите combine.exe ТРАТАТА > имя_файла');
      Writeln('   ТРАТАТА - строка для преобразования'); Halt(1)
  end;
  S := paramstr(1);
  ShowVariant('',S);
end.
во-вторых,
смотрите классику тут - "Методы программирования: переборные алгоритмы"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.12.2011, 00:57   #4
Элизабет
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 2
По умолчанию

Благодарю за предложенные вопрос)
На языке Паскаль естественно нужна задачка.. И преподаватель не разрешает использовать процедуры и рекурсию для решения данной задачки..
Элизабет вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка массива letnjaja Помощь студентам 0 23.10.2011 00:00
Обработка массива (си) Pascaler Помощь студентам 1 01.06.2011 11:28
Обработка Массива Марина01 Помощь студентам 6 26.04.2011 16:38
C++ Обработка массива JonnySKS Помощь студентам 0 05.05.2010 20:14
обработка массива, с++ lusuj Помощь студентам 2 11.11.2008 19:27