IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Подстановки
Reflex
сообщение 15.01.2007 16:11
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


Помогите смотри есть две подстаноки
Код

(1  2  3  4 ... n ) и   ( 1   2  3   4 ...  n )
(x1 x2 x3 x4 ...xn)  И  (y1 y2 y3 y4 ...yn)

требуеть написать прогамму которая выведет последовательность транспозиций вида
Код
(j,j+1)
(ij,ij+1)

такую, что если первую подстановку умножить на эту последовательность получиться вторая подстановка

Сообщение отредактировано: Reflex - 15.01.2007 16:11


--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 15.01.2007 16:14
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Пример есть ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reflex
сообщение 15.01.2007 16:29
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


например
(3 2 1) ( 1 3 2)
вывод
(1 3 2) (2 1 3)

грубо говоря какие две соседние цифры в упорядоченном множестве нужно поменять

и последовательность пар номеров соседних цифр, последовательная замена которы друг на друга приводит ко второму упорядоченному множеству


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 15.01.2007 16:30
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Так стоп. Нам нужно найти последотельность _перестановок_ для первой последовательности такую, чтобы из нее получилась вторая последовательность или что ? Я не пойму, причем тут умножение ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reflex
сообщение 15.01.2007 16:49
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


объясняю подругому забей на все что было раньше
есть два массива элементов
теперь
надо вывести такую последовательность пар соседних индексов массива, чтесли к первому массиву провести последовательно операцию"ы" для каждой пары чисел.
arr - наш массив
операция ы (a,b : integer)
var tmp : integer;
begin
tmp:=arr[a];
arr[a]:=arr[b];
arr[b]:=tmp;
end;

пример входных данных
(2 3 1 4) (1 3 2 4
Выходные данные : (1 2) (2 3) (1 2)
этот пример показан на картинке


--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.01.2007 16:58
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Тебе нужно сделать обычный пузырек с выводом промежуточных результатов (откуда/куда), только сортировку делать не по значению в массиве, а по его индексу в результирующем. Объясним я похлеще тебя smile.gif

На пальцах:
было (1,2,3,4,5) -надо (3,4,2,1,5)
Индексируем первый массив (добавлением еще одного или с использованием record- не важно):
значения 1,2,3,4,5
Индексы 4,3,1,2,5
Теперь обычный пузырек
если индекс[i]<индекс[i+1] то выводим результат и меняем местами индексы и значения.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reflex
сообщение 15.01.2007 17:58
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


помогите кодом, я не понимаю что делать если вход 1 2 5 и 1 2 3 , тоесть как быстро определить можно ли это сделать и как сделать то что сказал малис


--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.01.2007 18:03
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Вот набросок для примера:
const n=4;
type tt=record x,ind:byte; end;
const
x:array [1..n] of byte=(2,3,1,4); {было}
y:array [1..n] of byte=(1,3,2,4); {стало}
var z:array [1..n] of tt;
i,j,k:integer;
l:tt;
begin
for i:=1 to n do
for j:=1 to n do
if x[i]=y[j] then begin z[i].x:=x[i]; z[i].ind:=j; end; {Индексируем}
for k:=1 to n do
for i:=1 to n-1 do
if z[i].ind> z[i+1].ind then begin
write ('(',i,',',i+1,') ');
l:=z[i]; z[i]:=z[i+1]; z[i+1]:=l;
end;
end.

Проверку на возможность перестановки не делал, считается, что ты его не обманул. Но проверка нужна, ее проще всего добавить в цикл индексирования массива.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reflex
сообщение 15.01.2007 18:21
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


слушай а в такой индексации будет глюк при таком вводе 1 2 2 3 4 и 1 2 3 2 4


--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.01.2007 19:01
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Reflex @ 15.01.2007 18:21) *

слушай а в такой индексации будет глюк при таком вводе 1 2 2 3 4 и 1 2 3 2 4

Согласен, будет. Поправь, для этого достаточно вычеркивания числа из массива Y числа в момент совпадения при индексировании. yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"