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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2012, 21:52   #1
Determinant666
 
Регистрация: 02.03.2011
Сообщений: 7
Вопрос Сложная задача с матрицей

Всем доброе время суток! По ходу написание программы пришлось столкнуться с обработкой матрицы, задача состоит в следующем: допустим дана матрица А следующего вида:
1 1 2 2 0 0
3 3 4 4 5 5
6 6 0 0 7 7
8 8 9 9 10 10
11 11 12 12 0 0
0 0 0 0 13 13
и пользователь задает некое число допустим это число В=3...данная матрица включает в себя понятие значимого элемента, такими элементами являются все элементы не равные нулю взятые по одному разу, например для первой строки эти элементы: 1,2; для второй: 3,4,5. требуется провести оптимизацию этой матрицы по следующему принципу, число В определяет количество возможных значимых элементов матрицы в любой из строк, требуется, если это возможно перенести значимый элемент на строку выше, если там над этими элементами стоят нулевые, то есть, из исходной матрицы после такой оптимизации мы должны получить матрицу С вида:
1 1 2 2 5 5
3 3 4 4 7 7
6 6 9 9 10 10
8 8 12 12 13 13
11 11 0 0 0 0
то есть строка в которой все элементы нулевые просто удаляется, прощу помощи ибо очень запутался в самом алгоритме реализации такой операции, заранее спасибо!
Determinant666 вне форума Ответить с цитированием
Старый 21.09.2012, 23:49   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

че-та нифига не понятно с какого боку тут B, но сам алгоритм всплытия наверх очень простой:

- в цикле перебираешь все строки матрицы, от 0 до N-1
- сравниваеть попарно строку i и i+1 для каждого элемента, если в первой строке i-элемент равен нулю, меняешь его с элементом второй строки
таки образом, после первой итерации строки будут выглядеть так:

1 1 2 2 5 5
3 3 4 4 0 0
...

и так далее до конца цикла.
задачка забавная.. может даже решу её... потом, ибо завтра у меня отрыв и активное вливание в ночную жизнь города, в воскресение я отдыхаю после вчерашнего(((Ж а там видно будет..
Rififi вне форума Ответить с цитированием
Старый 22.09.2012, 15:33   #3
Determinant666
 
Регистрация: 02.03.2011
Сообщений: 7
По умолчанию

спасибо
Цитата:
Сообщение от Rififi Посмотреть сообщение
че-та нифига не понятно с какого боку тут B
В это число которое вводит пользователь и оно значит максимально возможное количество значимых элементов в одной строке, то есть если В=3, то строка: 1 2 3 0 0, не может стать после оптимизации например вот такой строкой: 1 2 3 4 4, ибо значимых элементов в таком случае будет уже 4
Determinant666 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложная задача Paster Fob Паскаль, Turbo Pascal, PascalABC.NET 9 16.05.2012 16:48
Сложная задача(( альбертоо Паскаль, Turbo Pascal, PascalABC.NET 1 07.12.2011 16:57
Сложная задача с матрицей Determinant666 C++ Builder 2 06.11.2011 21:28
сложная задача ugradvizhok Помощь студентам 1 30.03.2011 23:30
Сложная задача asale Microsoft Office Excel 6 07.04.2009 20:36