Помощь - Поиск - Пользователи - Календарь
Полная версия: переставление строк и столбцов местами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Archie
допустим нам дана какая-то из 0 и 1 матрица...в ней перепутаны столбцы и строки...нужно привести к такому виду:

1 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 1 0
0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 1

это пример...матрица может быть и не такого вида...
конкретно - мне нужна помощьв написании отрывка программы, который бы находил одинаковые строки и столбцы и сдвигал их вместе к указанному выше виду. желательно через массивы.пожалуйста помогите - хотя бы принцип, по которому можно это сделать. у меня есть задумка, но реализовать её не могу...слишком сложно по моему. я предполагаю что можно сравнивать поэлементно 1 и 2 строку затем 1 и 3 и так до последней.если строки одинаковые, то ставить такую же строку после первой затем после второй...затем провести аналогичный операции со столбцами. пожалуйста помогите реализовать мою идею,или пришлите свою.
volvo
Цитата
нужно привести к такому виду:

Цитата
матрица может быть и не такого вида...
Это называется "принеси то, не знаю что..." Конкретики не хватает: какая матрица тебе задана? Допустим, любая. К какому виду ее нужно привести? Что такого примечательного есть в той матрице, которую ты нарисовал? Ты имеешь в виду, что главная диагональ должна состоять только из единиц? Или что?
Archie
Цитата(volvo @ 11.03.2008 21:47) *

Это называется "принеси то, не знаю что..." Конкретики не хватает: какая матрица тебе задана? Допустим, любая. К какому виду ее нужно привести? Что такого примечательного есть в той матрице, которую ты нарисовал? Ты имеешь в виду, что главная диагональ должна состоять только из единиц? Или что?

1 1 0 0 1 1 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 1 0 1 0 0 0 0
1 1 0 0 1 1 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0 0 0 0 0 0
0 0 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 1 1 1
вот из такой матрицы нужно составить так называемую матрицу сильных компонент - а именно (на матрице видно) элементы 1,1 1,2 2,1 2,2 соеденить с 1,4 1,5 2,4 2,5 и аналогичную операцию произвести со столбцами...чтобы матрица стала вот такой "красивой"
1 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 0
...и так далее...да,кстати говоря диагональ действительно всегда будет единичной но также будут и "квадартные сгустки" - блоки единичных матриц.
volvo
Цитата
чтобы матрица стала вот такой "красивой"
Ты это компьютеру как объяснять будешь? Определение "красоты" матрицы приведи...
Archie
в общем сортироваь матрицу так чтобы все единицы оказались на диагонали. путём переставления столбцов и строк.и привести в конечном счёте к диагональному виду, так чтобы на диагонали были единицы и блочные матрицы из единиц.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.