|
|
Знаете ли Вы, что ... | |
![]() |
...инструкция по установке аватара описана в Правилах форума. |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Pascal, Delphi & Builder Вопросы программирования касающиеся Pascal и Delphi |
Ответить |
|
Опции темы | Опции просмотра |
![]() |
#32 |
![]() ![]() ![]() |
Код:
Program Perebor; uses WinDos, WInCrt; Const C = 4; var A: array[1..C] of Integer; P: array[1..C] of Integer; X: array[1..C] of Integer; I,J:Integer; Procedure swp(N,S:Integer); var T:Integer; begin T:=X[N]; X[N]:=X[N+S]; X[N+S]:=T; For T:=1 to C do P[X[T]]:=T; end; begin For I:=1 to C do begin a[i]:=1; P[i]:=i; X[i]:=i; end; Writeln ('Begin'); write ('X:'); for i:=1 to C do write (X[i]); writeln; while a[C]=1 do begin for i:=1 to C do case A[i] of -1:if P[i]=1 then a[i]:=-a[i] else if X[P[i]-1]<X[P[i]] then a[i]:=-a[i] else begin swp(P[i],-1); break end; 1:if P[i]=C then a[i]:=-a[i] else if X[P[i]+1]<X[P[i]] then a[i]:=-a[i] else begin swp(P[i],+1); break end; end; {Case} If i=C then swp(P[i],+1); write ('X:'); for i:=1 to C do write (X[i]); writeln; end; end.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 14.05.2009 в 21:52. |
|
Ответить |
![]() |
#33 |
![]() ![]() ![]() |
При изменении параметра С (длинна подстановок) получим ВСЕ подстановки всего ровно одной перестановкой соседних чисел. НО КАК Я ЗАПАРИЛСЯ! Мой вариант (только для иллюстрации) печатает первую перестановку дважды
![]()
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 14.05.2009 в 21:41. |
|
Ответить |
![]() |
#34 |
![]() ![]() ![]() |
Закономерность такая - сначала плавает единичка (проследите ее позицию), затем в "остатке" плавает двойка, в остатке от единички и двойки "плавает" тройка и т.д. Плавает - значит переберает все возможные позиции. Остаток от единички - это когда 1-ка пробежала все позиции, то смотрим на последовательность без единички.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 14.05.2009 в 21:47. |
|
Ответить |
![]() |
#36 | |
Сообщений: 1,306
+ 885
788/480
– 0
51/26
![]() |
Цитата:
1243 1423 1324 1342 1432 4132 3142 3124 4123 2143 2134 2314 2413 4213 3214 3412 4312 4321 3421 3241 4231 2431 2341 как видно у меня не заканчиваеться тем же числом, но в этом и нет необходимости поскольку будь у нас например еще одно число 6 то его просто можно добавить с переди последовательности затем переписать последовательность в обратном порядке и вставить число 6 вторым номером затем сново в обратном порядке а число 6 3м номером и т.д. затем можно добавить таким образом еще числа.... сколько угодно... ![]() и алгоритм уже есть, ток паскаля не знаю -как соберусь -нарисую блок схему... ![]() Последний раз редактировалось Наташа; 14.05.2009 в 22:55. |
|
|
Ответить |
"+" от:
|
![]() |
#37 | |
![]() ![]() ![]() |
Цитата:
![]()
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
Ответить |
![]() |
#38 |
![]() ![]() ![]() |
Предлагаю подумать над другим алгоритмом перебора перестановок.
Нужно придумать "функцию", которая одну перестановку превращает в другую и если ее много много раз (N! раз) применять, то она оббежит все перестановки.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
Ответить |
![]() |
#39 | ||
![]() ![]() ![]() |
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
||
|
Ответить |
"+" от:
|
![]() |
#40 | |
Сообщений: 1,306
+ 885
788/480
– 0
51/26
![]() |
Оффтоп: Цитата:
![]() |
|
|
Ответить |
|