Окружения элемента в матрице |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Окружения элемента в матрице |
Merhaba |
19.04.2011 18:31
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: 0 |
Добрый вечер!
Помогите Пожалуйста написать программу: Назовем k-окружением элементa a_ij (целочисленного) двумерного массива А такие элементы a_pq , у которых по крайней мере один из индексов (p или q) отличается по абсолютной величине от соответствующего ему индекса (i или j) ровно на k , а другой - не более, чем на k . Напишите программу, которая подсчитывает в массиве А количество элементов, которые больше любого элемента из своего 1-окружения, но при этом меньше любого элемента из своего 2-окружения. |
Lapp |
8.05.2011 12:05
Сообщение
#2
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Может быть и не совсем двойная, по условию одна из размерностей <=2. То есть, прямоугольная.. Я бы сказал, что совсем не двойная, но и не совсем прямоугольная, а квадратная (или неполный квадрат, если скраю).2 DarkWishMaster: идея функции по большому счету неплоха, но есть проблема.. Как передавать в эту функцию условие? В первой проверке должно быть больше, во второй - меньше. Выход, конечно, есть, и не один - либо закодировать условие символом и потом использовать case для распознования, либо делать параметр-функцию. Последнее, на мой взгляд, предпочтительнее, но явно медленнее. И вообще, мне кажется, что нечего огород городить из-за двух вызовов, так что я просто сделал БЕЗ функции )). И второе: да, DarkWishMaster, ты прав в своих сомнениях насчет условия - оно у тебя неправильно реализовано. Короче - Merhaba, вот код: function Min(a,b: integer): integer; Если все же хочется сделать через функцию - говори, могу показать, как. Кстати, DarkWishMaster - попробуй сделать с параметром-функцией. И небольшое лирическое отступление на правах шутки.. Вообще, программа, которая при небольших n и m (то есть, порядка 100) с подавляющей вероятностью дает правильный ответ, может быть написана примерно так: begin Потому что при случайном распределении вероятность нахождения элемента, удовлетворяющего условиям практически нулевая.. )) Я прогнал при размере массива 20000х20000 и получил всего 25 случаев. Из них 15 - на краях (там вероятность выше несколько). То есть вероятность на 1 элемент массива в объеме равна примерно (25-15)/400000000, то есть 2.5*10-8. Это ниже, чем вероятность выиграть миллион в лотерею.. )) Слова, выделенные курсивом, добавлены позже Сообщение отредактировано: Lapp - 8.05.2011 12:25 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Merhaba |
19.05.2011 22:59
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: 0 |
Я бы сказал, что совсем не двойная, но и не совсем прямоугольная, а квадратная (или неполный квадрат, если скраю). 2 DarkWishMaster: идея функции по большому счету неплоха, но есть проблема.. Как передавать в эту функцию условие? В первой проверке должно быть больше, во второй - меньше. Выход, конечно, есть, и не один - либо закодировать условие символом и потом использовать case для распознования, либо делать параметр-функцию. Последнее, на мой взгляд, предпочтительнее, но явно медленнее. И вообще, мне кажется, что нечего огород городить из-за двух вызовов, так что я просто сделал БЕЗ функции )). И второе: да, DarkWishMaster, ты прав в своих сомнениях насчет условия - оно у тебя неправильно реализовано. Короче - Merhaba, вот код: function Min(a,b: integer): integer; Если все же хочется сделать через функцию - говори, могу показать, как. Кстати, DarkWishMaster - попробуй сделать с параметром-функцией. И небольшое лирическое отступление на правах шутки.. Вообще, программа, которая при небольших n и m (то есть, порядка 100) с подавляющей вероятностью дает правильный ответ, может быть написана примерно так: begin Потому что при случайном распределении вероятность нахождения элемента, удовлетворяющего условиям практически нулевая.. )) Я прогнал при размере массива 20000х20000 и получил всего 25 случаев. Из них 15 - на краях (там вероятность выше несколько). То есть вероятность на 1 элемент массива в объеме равна примерно (25-15)/400000000, то есть 2.5*10-8. Это ниже, чем вероятность выиграть миллион в лотерею.. )) Слова, выделенные курсивом, добавлены позже Не знаете случайно, как это на Java написать: for p:= Max(i-k,1) to Min(i+k,n) do for q:= Max(j-k,1) to Min(j+k,m) do ? |
Lapp |
19.05.2011 23:36
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Не знаете случайно, как это на Java написать: for p:= Max(i-k,1) to Min(i+k,n) do for q:= Max(j-k,1) to Min(j+k,m) do ? 1. Для Java есть раздел "Другие языки". 2. Мы много, чего знаем. А ты знаешь, как по-русски звучит слово, выражающее благодарность? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 27.04.2024 10:25 |