1 / 1 / 0
Регистрация: 04.10.2008
Сообщений: 97
1

Переборная задача

06.12.2008, 20:25. Показов 3571. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется задача:
Построить алгоритм, выдающий без повторений все перестановки N чисел.
Есть алгоритм её решения:
Этот алгоpитм хорошо известен и достаточно подробно изложен. Опишем его (при N=5), от чего рассуждения не утратят общности. Алгоритм составлен так, что в процессе его исполнения перестановки N чисел располагаются лексикографически (в словарном порядке). Это значит, что перестановки сравниваются слева направо поэлементно. Больше та, у которой раньше встретился элемент, больше соответствующего ему элемента во второй перестановке. (Например, если S=(3,5,4,6,7),а L=(3,5,6,4,7), то S<L). Принцип работы алгоритма разъясним на примере. Допустим, необходимо воспpоизвести все перестановки цифр 3,4,5,6,7. Первой перестановкой считаем перестановку (3,4,5,6,7). Последней воспроизводимой перестановкой будет (7,6,5,4,3). Предположим, что на некотором шаге работы алгоритма получена перестановка P=(5,6,7,4,3). Для того чтобы определить непосредственно следующую за ней перестановку, необходимо, пересматривая данную перестановку справа налево, следить за тем, чтобы каждое следующее число было больше предыдущего, и остановиться сразу же, как только это правило нарушится. Место останова указано стрелкой: (5,6,7,4,3). - Затем вновь просматриваем пройденный путь ( справа налево ) до тех пор, пока не дойдем до первого числа, которое уже больше отмеченного. Ниже место второго останова отмечено двойной стрелкой. (5,6,7,4,3). - Э Поменяем местами отмеченные числа: (5,7,6,4,3). Э - Теперь в зоне, расположенной справа от двойной стрелки, упорядочим все числа в порядке возрастания. Так как до сих пор они были упорядочены по убыванию , то это легко сделать, перевернув указанный отрезок. Получим: Q=(5,7,3,4,6). Q и есть та перестановка, которая должна воспроизводиться непосредственно после P. Действительно, P<Q, так как, пересматривая эти перестановки слева направо, (P(2)=6,Q(2)=7). Пусть существует такая перестановка R, что P<R<Q. Тогда P(1)=R(1)=Q(1). По построению же Q(2) -- это наименьшее во множестве Q\Q(1)={3,4,6,7} число, такое, что Q(2)>P(2). Поэтому для R(2) верно одно из двух равенств: R(2)=Q(2) или R(2)=P(2). Но так как в P элементы, начиная с P(3), убывают, то из P<R следует, что если P(2)=R(2), то и P=R. Аналогично, так как в Q элементы, начиная с Q(3), возрастают, то из R<Q следует, что если R(2)=Q(2), то и R=Q.

Вот что у меня вышло (ниже). Знаю, что выдаёт не все перестановки. Хочу чтобы вы мне с эти помогли. n возьмём равное 4. Заранее спасибо!

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const n=4;
var i, x, k, p, m, t:integer;
    a: array [1..n] of integer;
begin
for i:=1 to n do
 begin
writeln('Vvedite ', i, ' chislo: ');
readln(x);
a[i]:=x;
 end;
for i:=1 to n do
write(a[i], ' ');
for m:=1 to n*n do
         begin
k:=0;
for i:=n downto 1 do
  begin
  if a[i]<k then
    begin
  p:=a[i];
  a[i]:=k;
  a[i+1]:=p;
  k:=a[i];
  break;
    end;
if a[i]>k then k:=a[i];
 
 
  end;
  writeln;
  for i:=1 to n do
  write(a[i], ' ');
 
 end;
readln;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2008, 20:25
Ответы с готовыми решениями:

Переборная задача: Для заданного n сгенерировать все формулы, которые при вычислении дадут n.
В формуле ((((((((1 ? 2) ? 3) ? 4) ? 5) ? 6) ? 7) ? 8) ? 9) на месте ? может стоять любая операция...

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача)
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных...

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он...

1
1 / 1 / 0
Регистрация: 04.10.2008
Сообщений: 97
08.12.2008, 16:15  [ТС] 2
никто не поможет?
0
08.12.2008, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2008, 16:15
Помогаю со студенческими работами здесь

Первая смешанная задача для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье
Решить первую смешанную задачу для волнового уравнения на отрезке (задача о колебаниях ограниченной...

Задача о размещении весов по ящикам (задача о рюкзаках)
Есть упорядоченный по невозрастанию набор весов предметов w1..wn, которые необходимо распределить...

Задача на файл и задача на создание очереди
1 Дан символьный файл, содержащий, по крайней мере, один символ пробела. Удалить из файла все...

Задача Дам или задача Восьми
помогите найти ошибку в алгоритме. не находит ответ подозреваю ошибку в k, i, j package...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru