13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
|
1 | |
Восьмимерка: поиск вектора в матрице02.12.2010, 20:06. Показов 1159. Ответов 12
Метки нет (Все метки)
Дана матрица и вектор (могут быть любых размеров). Найти в матрице линейную последовательность элементов, совпадающих с элементами данного вектора, причем вектор может располагаться по любому из восьми направлений (по вертикалям, горизонталям, диагоналям). Сказали, что это аналогия какого-то известного ребуса.
ПОМОГИТЕ или хотя бы натолкните на идею решения
0
|
02.12.2010, 20:06 | |
Ответы с готовыми решениями:
12
Проверка вектора на собственность к матрице Расположить элементы вектора в матрице змейкой Формирования вектора частот появления элементов в матрице Поменять значения элементов в матрице по значениям вектора |
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
02.12.2010, 20:32 | 2 |
Такую не знаю. Но то что из каждой точки матрицы придется рассматривать все восемь направлений - это точно.
0
|
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
02.12.2010, 20:48 | 3 |
Полный перебор - верный путь к решению... Только вот через сколько лет это решение будет получено - вопрос хороший)))
0
|
13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
|
03.12.2010, 01:24 [ТС] | 4 |
Эту задачу задали парню в Национальном техническом университете г. Брно, Чехия. На решение дали три дня (до полуночи воскресенья надо отправить на сервер, иначе работа будет считаться не выполненной)
0
|
4851 / 2651 / 911
Регистрация: 29.11.2010
Сообщений: 5,712
|
||||||
03.12.2010, 02:24 | 5 | |||||
Гон сиреневый. За три дня можно реализовать эту задачу тупо восьмю разными функциями, перебирающими все возможные варианты. Это не уровень чешского технологического университета. Только если кто-то решил приколоться или убедится, что абитуриент не полный баран.
Топором вырублено за несколько минут, но основная идея должна быть ясна. Прямой, ессессенно, перебор.
0
|
13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
|
03.12.2010, 18:15 [ТС] | 6 |
Уважаемый lemegeton,
эту задачу задали моему знакомому парню в этом универе. Подозреваю, что они ожидают в решении рекурсию или что-то подобное. Это - третий из четырех проектов, и предыдущие были тоже не самые простые (например, вычислить гиперболический тангенс с наперед заданной точностью, не используя библиотечные функции - мы с ним решили такое двумя способами - с помощью рядов и с помощью цепных дробей). Причем при вычислении с помощью рядов препод сказал - надо было поставить еще проверку на NAN (not a number, такое введено в стандарте C99). Так что вряд ли они ждут простого перебора. На решение дали неделю, но парень поздно обратился ко мне за советом. Добавлено через 5 минут и еще одно: все должно быть сделано на языке C (не C++), причем в соответствии со стандартом C99
0
|
Модератор
12703 / 7534 / 1761
Регистрация: 25.07.2009
Сообщений: 13,870
|
|
03.12.2010, 18:49 | 7 |
Полностью согласен! Разве, что вариантов можно гораздо больше придумать...
Задание уточните - все элементы вектора должны совпасть, или серия в произвольном месте вектора должна совпасть с серией в произвольном месте строки/столбца/диагонали массива? А так в принципе - со строками вообще всё просто, а из столбцов и диагоналей проще создавать временный массив и memcmp() в руки...
0
|
13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
|
03.12.2010, 19:19 [ТС] | 8 |
должны совпасть все элементы вектора. Вектор может располагаться по любой горизонтали, или вертикали, или диагонали. Например, в матрице
8 4 5 8 1 14 1 3 4 5 9 6 17 80 21 10 3 4 75 14 9 0 19 1 2 16 19 68 41 2 3 4 1 32 77 искомый вектор (1; 2; 3; 4) расположен, начиная с элемента (5;5) по диагонали вверх и влево Добавлено через 1 минуту в терминах языка С координаты начала вектора, конечно, [4][4] Добавлено через 17 минут lemegeton, если Вы знаете по крайней мере 8 функций, покажите хоть одну! ... но в терминах C, а не C++, и не используя библиотечных функций и классов типа vector Добавлено через 3 минуты easybudda, Вы модератор, я ценю Ваше время и не прошу заниматься моей задачей лично. Но, может, к кому-нибудь меня направите?
0
|
4851 / 2651 / 911
Регистрация: 29.11.2010
Сообщений: 5,712
|
||||||
03.12.2010, 20:58 | 9 | |||||
Шутишь, да? Просил алгоритм, получил алгоритм. Теперь придираешься к языку, которого даже не указал. Что еще забыл указать?
Имелись в виду восемь функций последовательного перебора массива из каждой точки матрицы в восьми направлениях. (Назовем матрицу - А размером MхN, а вектор - B размером K) Последовательный перебор в такой задаче навскидку кажется самым оптимальным решением, хоть и с высокой сложностью. В худшем случае, к каждому элементу матрицы будет M*N*K обращений. Рекурсивный алгоритм вряд ли будет эффективен, поскольку для больших К будет излишне поедать ресурсы (стек+время вызова). Можно рассмотреть оптимизации для точек, находящихся ближе, чем на К единиц к границе матрицы. А на С будет так. Заодно влепил направления.
1
|
13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
|
03.12.2010, 21:25 [ТС] | 10 |
lemegeton, большое спасибо!
и всем спасибо! а насчет указания стандарта - в будущем буду аккуратнее
0
|
4851 / 2651 / 911
Регистрация: 29.11.2010
Сообщений: 5,712
|
||||||
03.12.2010, 21:30 | 11 | |||||
перепутал описания направлений. Должно быть
1
|
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
04.12.2010, 12:21 | 12 |
Да ну? Это например вычисление тангенса с заданной точность (пусть хотя-бы гиперболического)? Знаете, сколько подобных "проектов" тут появляется каждую неделю? ИМХО, вы слишком переоцениваете сложность тех заданий, что задают в Чешском Технологическом...
0
|
13 / 13 / 4
Регистрация: 01.12.2010
Сообщений: 95
|
||||||
04.12.2010, 17:11 [ТС] | 13 | |||||
lemegeton, пожалуйста просветите!
1. в строках из вчерашнего кода (функция make_one_test)
2. вместо d (эта переменная не объявлена) поставил с - правильно? Моя программа не работает, но причина может быть не в Вашем коде: у меня массив создается динамически, и я мог ошибиться с указателями. Поэтому проверяю везде код.
0
|
04.12.2010, 17:11 | |
04.12.2010, 17:11 | |
Помогаю со студенческими работами здесь
13
Формирования вектора частот появления элементов в матрице Составить программу формирования по вещественной квадратной матрице логического вектора Составить программу формирования по вещественной квадратной матрице A логического вектора B В квадратной матрице выделить строки и найти строку с максимальной длиной вектора Для каждого элемента вектора определить, сколько раз он встречается в матрице Как проверить есть ли в матрице элементы совпадающие с каким-либо элементом вектора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |